@
feat(enemy): 追击起手前先转身朝玩家(播 Flip) + 冲刺速度可配置 - ContactChaseAbility:进入追击先 FaceDirection 朝玩家,若背对则播 Flip 转身、 等 IsTurning 结束后再 Skill_Start(张口)→冲刺;已朝向玩家则跳过转身直接张口。 - 新增 _dashSpeed 字段(<=0 回退 Stats.RunSpeed),冲刺速度可在能力 Inspector 配置。 - E001 EnemyMovement._enableTurnAnimation=true(prefab+脚手架),转向播 AnimConfig.Turn (Flip),用于巡逻翻边与追击起手前转身;脚手架 PlaceE001 同步。 PlayMode 验证(brain 关隔离):背对玩家→触发追击→clip=Flip(IsTurning)→转向完成 facing 朝玩家→Skill_Start→冲刺→Skill_End,"先转身再张口"成立。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> @
This commit is contained in:
@@ -21,11 +21,28 @@ namespace BaseGames.Enemies.Abilities
|
||||
[Header("接触伤害")]
|
||||
[SerializeField] private BodyContactDamage _contactDamage;
|
||||
|
||||
[Header("冲刺")]
|
||||
[Tooltip("冲刺速度;<=0 时回退用 EnemyStatsSO.RunSpeed(追击速度)")]
|
||||
[SerializeField] private float _dashSpeed = 0f;
|
||||
|
||||
protected override IEnumerator ExecuteCoroutine()
|
||||
{
|
||||
Phase = AbilityRunState.Active;
|
||||
_enemy.SetEngaged(true);
|
||||
|
||||
// 冲刺方向:按玩家所在侧一次性确定(committed 冲锋)
|
||||
float dir = (_enemy.PlayerTransform != null &&
|
||||
_enemy.PlayerTransform.position.x < _enemy.transform.position.x) ? -1f : 1f;
|
||||
var mv = _enemy.Movement;
|
||||
|
||||
// 先转身朝玩家(背对时播 Flip 转身动画),转身完成后再张口
|
||||
if (mv != null)
|
||||
{
|
||||
mv.FaceDirection((int)dir);
|
||||
while (mv.IsTurning)
|
||||
yield return null;
|
||||
}
|
||||
|
||||
// 起手:张口(一次性)。期间静止、不伤人;锁住动画防被步态覆盖。
|
||||
if (_startClip.Clip != null)
|
||||
{
|
||||
@@ -34,11 +51,9 @@ namespace BaseGames.Enemies.Abilities
|
||||
yield return EnemyAbilityWaits.Get(_startClip.Clip.length);
|
||||
}
|
||||
|
||||
// 冲刺方向:起手后按玩家所在侧一次性确定(committed 冲锋)
|
||||
float dir = (_enemy.PlayerTransform != null &&
|
||||
_enemy.PlayerTransform.position.x < _enemy.transform.position.x) ? -1f : 1f;
|
||||
float speed = _enemy.Stats != null ? _enemy.Stats.RunSpeed : 0f;
|
||||
var mv = _enemy.Movement;
|
||||
// 冲刺速度:优先能力配置的 _dashSpeed,否则回退 Stats.RunSpeed
|
||||
float speed = _dashSpeed > 0f ? _dashSpeed
|
||||
: (_enemy.Stats != null ? _enemy.Stats.RunSpeed : 0f);
|
||||
|
||||
// 冲刺:朝该方向直冲、接触伤害开、播 Skill_Loop,直到撞墙/到边缘或玩家消失即停。
|
||||
if (_loopClip.Clip != null)
|
||||
|
||||
Reference in New Issue
Block a user