Files
zeling_v2/Assets/_Game/Scripts/Enemies/EnemyMoveInput.cs
T
joywayer 4808077fc6 feat(enemy): ContactChaseAbility 改造为 RushAbility(冲锋)
- 起手前锁定玩家 X 与方向(committed),终点改为身体整体越过锁定点(Body.HasPassed)
- 终止条件:越过锁定点/撞墙(只判墙)/最大冲刺时长(SO 新增 maxDashDuration)/净位移卡死
- 冲锋期间经 EnemyMoveInput.AllowLedgeCross 放开悬崖夹紧,可冲下崖不悬停边缘
- 类与文件重命名(GUID 保留),脚手架与向导同步更新
2026-07-27 13:38:05 +08:00

47 lines
2.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using UnityEngine;
namespace BaseGames.Enemies
{
/// <summary>
/// 敌人移动意图信号。
/// <para><b>持久字段</b><see cref="MoveDir"/>/<see cref="MoveSpeed"/>):写入后持续生效,
/// 解决 FixedUpdate 频率快于 Update 时的空帧抖动;由 <see cref="WantStop"/> 显式清零。</para>
/// <para><b>一次性脉冲字段</b><see cref="WantStop"/>/<see cref="WantFace"/>):
/// EnemyMovement 消费后自动清零,无需 BD 任务每帧续写。</para>
/// </summary>
public struct EnemyMoveInput
{
/// <summary>
/// 水平移动方向:-1 左 / +1 右。<b>持久</b>——写入后保持,直到 WantStop 被置 true 或
/// 再次写 0。不写 = 维持上一次方向(不会自动停止)。
/// </summary>
public float MoveDir;
/// <summary>显式移动速度。0 = 使用配置中的 WalkSpeed。<b>持久</b>,随 MoveDir 同步清零。</summary>
public float MoveSpeed;
/// <summary>
/// 一次性脉冲:置 true 后 EnemyMovement 立即停止并将 MoveDir/MoveSpeed 清零,
/// 然后自动将本字段清零。BD 任务在 OnEnd() 中调用 StopMovement() 即可,无需每帧续写。
/// </summary>
public bool WantStop;
/// <summary>一次性脉冲:本 FixedUpdate 帧处理朝向对准后自动清零。</summary>
public bool WantFace;
/// <summary>朝向目标的世界坐标(WantFace 为 true 且 FaceDir == 0 时生效)。</summary>
public Vector2 FaceTargetPos;
/// <summary>直接指定朝向方向:+1 右 / -1 左 / 0 表示由 FaceTargetPos 计算。</summary>
public int FaceDir;
/// <summary>
/// 本次移动允许越过崖沿(committed 冲锋用):置 true 时 <see cref="EnemyMovement.MoveWithSpeed"/>
/// 不再做悬崖夹紧,敌人会冲出平台边缘并按重力下落,而非停在崖边。
/// <b>持久</b>——随 MoveDir/MoveSpeed 同步清零(WantStop 时复位),故 StopMovement() 即自动关闭,
/// 不会因能力被打断而残留。
/// </summary>
public bool AllowLedgeCross;
}
}