using UnityEngine;
namespace BaseGames.Enemies
{
///
/// 敌人移动意图信号。
/// 持久字段(/):写入后持续生效,
/// 解决 FixedUpdate 频率快于 Update 时的空帧抖动;由 显式清零。
/// 一次性脉冲字段(/):
/// EnemyMovement 消费后自动清零,无需 BD 任务每帧续写。
///
public struct EnemyMoveInput
{
///
/// 水平移动方向:-1 左 / +1 右。持久——写入后保持,直到 WantStop 被置 true 或
/// 再次写 0。不写 = 维持上一次方向(不会自动停止)。
///
public float MoveDir;
/// 显式移动速度。0 = 使用配置中的 WalkSpeed。持久,随 MoveDir 同步清零。
public float MoveSpeed;
///
/// 一次性脉冲:置 true 后 EnemyMovement 立即停止并将 MoveDir/MoveSpeed 清零,
/// 然后自动将本字段清零。BD 任务在 OnEnd() 中调用 StopMovement() 即可,无需每帧续写。
///
public bool WantStop;
/// 一次性脉冲:本 FixedUpdate 帧处理朝向对准后自动清零。
public bool WantFace;
/// 朝向目标的世界坐标(WantFace 为 true 且 FaceDir == 0 时生效)。
public Vector2 FaceTargetPos;
/// 直接指定朝向方向:+1 右 / -1 左 / 0 表示由 FaceTargetPos 计算。
public int FaceDir;
}
}