ConcreteActions
1. 动作类型与分类
ConcreteActions目录包含了游戏中所有具体的动作实现,这些动作可以分为以下几类:
| 动作类型 | 代表实现 | 核心特点 |
|---|---|---|
| 物理攻击 | MeleeAction | 基于物理检测的近战攻击,需要碰撞检测 |
| 投射物攻击 | LaunchProjectileAction, ChargedLaunchProjectileAction | 生成物理投射物,有飞行轨迹和碰撞效果 |
| 范围攻击 | AOEAction | 基于指定位置和半径的区域攻击 |
| 移动与追逐 | ChaseAction, DashAttackAction | 控制角色移动和位置调整 |
| 状态变化 | StealthModeAction, ChargedShieldAction | 改变角色状态或提供持续效果 |
| 交互动作 | ReviveAction, PickUpAction, DropAction | 与其他角色或物体的交互 |
| 情绪与表达 | EmoteAction | 角色情绪表达或非战斗动作 |
2. 共同实现模式
所有具体动作都继承自Action基类,并遵循相似的实现模式:
2.1 动作生命周期管理
每个动作都实现了完整的生命周期方法:
// 动作启动publicoverrideboolOnStart(ServerCharacterserverCharacter){/* ... */}// 动作更新publicoverrideboolOnUpdate(ServerCharacterclientCharacter){/* ... */}// 动作重置publicoverridevoidReset(){/* ... */}// 动作取消publicoverridevoidCancel(ServerCharacterserverCharacter){/* ... */}// 客户端特定方法publicoverrideboolOnStartClient(ClientCharacterclientCharacter){/* ... */}publicoverrideboolOnUpdateClient(ClientCharacterclientCharacter){/* ... */}publicoverridevoidCancelClient(ClientCharacterclientCharacter){/* ... */}2.2 执行时间控制
所有动作都使用TimeRunning或Time.time - TimeStarted来控制执行时间:
if(TimeRunning>=Config.ExecTimeSeconds&&!m_ExecFired){// 执行动作核心逻辑m_ExecFired=true;PerformAction();}2.3 状态管理
每个动作都维护自己的状态变量,如执行标志、目标引用等:
privateboolm_ExecFired;privateNetworkObjectm_Target;privateList<SpecialFXGraphic