BlueRoseNote/02-Note/DAWA/2025.1.26格斗游戏笔记.md

2.4 KiB
Raw Blame History

Class

FightGameAction

FightGameAction => GameAction => HitBoxAction => Actor

CustomEvent

  • 继承事件:
    • ActionStart取得当前Pawn并且赋予FgPawn变量以及当前AnimInstance赋予PawnAnim。
    • SpecialEvent调用IsParry()来判断是否是格挡事件如果是就调用Parry事件。
    • StrikeEvent
      1. StrikeFeedback触发对应的反馈效果。包括粒子、声音、力、镜头摇晃。
      2. ApplyHitDamage应用伤害。
    • OtherEvent其他Hit逻辑。
  • 新事件:
    • Parry格挡事件。
    • Freeze硬直效果。
    • ResetFreeze重置硬直效果。

HitBoxAction

Component

  • HitBoxEditor编辑用组件用于编辑每帧Action时切换指定Index的帧。ComponentTag"hb.Editor"
    • FrameSlider
      • FrameIdTx
    • AnimSlider

Method

  • Initialize()
    1. SetOwner()
    2. SetFrameList()遍历所有HitBoxFrameComponent并且根据组件名称取得FrameID
    3. ActionStart()调用ActionStart()事件。

CustomEvent

  1. ActionStart
  2. HitBox
  3. OtherHits

Editor相关 CustomEvent

  1. InitializeEditor
  2. EditorSliders根据FrameSlider、AnimSlider的当前帧数根据相对Location来记录FrameId来设置显示文字。
  3. DestroyEditor

GameAction

主要实现了HitBox事件。判断是否是StrikeEvent与SpcialEvent后调用StrikeEvent()与SpcialEvent()。

CustomEvent

  1. StrikeEvent
  2. SpcialEvent

Editor相关 CustomEvent

  1. InitializeEditor在父类事件的基础上用相对位移来存储开始播放Montage的初始位置设置到SkeleMesh->AnimationData->InitialPosition

ActionComponent

主要使用这个组件来管理当前Action设置HitBoxAction类给ChildActor并且调用HitBoxAction的Initialize并且绑定ActionEvent。

Event

  • BeginPlay设置ChildActorComponent到ChildActor变量上。可根据Tag来选择ChildActorComponent。
  • EndPlay触发DestoryAction事件。

CustomEvent

  • SetAction设置新的HitBoxAction类以及Frame Id。
    • SetActionClass()其中SetActionClass的逻辑会调用HitBoxAction的Initialize并且绑定ActionEvent。
    • 调用Action类的SetActiveFrame()。
  • NewAction依次调用DestoryAction、SetAction事件。
  • DestoryAction将ChildActor置空。

HitBoxFrame

HitBoxFrame => SceneComponent

CustomEvent

  • InitializeFrame
  • UpdateFrame
  • DestroyFrame