feat(enemy): ContactChaseAbility 改造为 RushAbility(冲锋)

- 起手前锁定玩家 X 与方向(committed),终点改为身体整体越过锁定点(Body.HasPassed)
- 终止条件:越过锁定点/撞墙(只判墙)/最大冲刺时长(SO 新增 maxDashDuration)/净位移卡死
- 冲锋期间经 EnemyMoveInput.AllowLedgeCross 放开悬崖夹紧,可冲下崖不悬停边缘
- 类与文件重命名(GUID 保留),脚手架与向导同步更新
This commit is contained in:
2026-07-27 13:38:05 +08:00
parent 7cba58919f
commit 4808077fc6
11 changed files with 215 additions and 146 deletions
@@ -1,19 +0,0 @@
using Animancer;
using UnityEngine;
namespace BaseGames.Enemies.Abilities
{
/// <summary>ContactChaseAbility 的配置:起手/循环/收招动画 + 冲刺速度。</summary>
[CreateAssetMenu(menuName = "BaseGames/Enemies/Abilities/Contact Chase Ability", fileName = "ABL_")]
public class ContactChaseAbilitySO : EnemyAbilitySO
{
[Header("动画(起手 / 循环 / 收招)")]
public ClipTransition startClip; // Skill_Start:张口(一次性)
public ClipTransition loopClip; // Skill_Loop:快速爬行追击(循环)
public ClipTransition endClip; // Skill_End:收招(一次性)
[Header("冲刺")]
[Tooltip("冲刺速度;<=0 时回退用 EnemyStatsSO.RunSpeed(追击速度)")]
public float dashSpeed = 0f;
}
}
@@ -0,0 +1,23 @@
using Animancer;
using UnityEngine;
namespace BaseGames.Enemies.Abilities
{
/// <summary>RushAbility(冲锋)的配置:起手/循环/收招动画 + 冲刺速度与时长上限。</summary>
[CreateAssetMenu(menuName = "BaseGames/Enemies/Abilities/Rush Ability", fileName = "ABL_")]
public class RushAbilitySO : EnemyAbilitySO
{
[Header("动画(起手 / 循环 / 收招)")]
public ClipTransition startClip; // Skill_Start:起手(一次性)
public ClipTransition loopClip; // Skill_Loop:冲锋推进(循环)
public ClipTransition endClip; // Skill_End:收招(一次性)
[Header("冲刺")]
[Tooltip("冲刺速度;<=0 时回退用 EnemyStatsSO.RunSpeed(追击速度)")]
public float dashSpeed = 0f;
[Tooltip("单次冲锋的最长时长(秒)。够不到锁定点时(掉坑/对岸/被非检测层挡住)由它收尾。" +
"0 = 不限时长(仅靠越过锁定点/撞墙/卡死检测终止)。")]
[Min(0f)] public float maxDashDuration = 2f;
}
}