refactor(enemy): 删除 AiPhase 影子层,动画统一由 locomotion/反应态/能力驱动

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-10 13:38:27 +08:00
co-authored by Claude Opus 4.8
parent 347d0e2f50
commit d718b99685
7 changed files with 19 additions and 132 deletions
@@ -1,5 +1,6 @@
using System.Collections;
using Animancer;
using BaseGames.AI;
using UnityEngine;
namespace BaseGames.Enemies.Abilities
@@ -67,8 +68,8 @@ namespace BaseGames.Enemies.Abilities
yield return EnemyAbilityWaits.Get(_recoveryTime);
// SetAiPhase(Patrol) 自动播放 AnimConfig.Walk(地面移动动画)
_enemy.SetAiPhase(AiPhase.Patrol);
// PlayLocomotionClip(Patrol) 播放 AnimConfig.Walk(地面移动动画)
_enemy.PlayLocomotionClip(LocomotionMode.Patrol);
}
private bool IsGrounded()
@@ -19,7 +19,6 @@ namespace BaseGames.Enemies.Abilities
_animancer.Play(_appearClip);
yield return EnemyAbilityWaits.Get(_appearClip.Clip.length);
_enemy.SetAiPhase(AiPhase.Combat);
}
}
}
@@ -22,11 +22,11 @@ namespace BaseGames.Enemies.Abilities
protected override IEnumerator ExecuteCoroutine()
{
Phase = AbilityRunState.Active;
_enemy.SetEngaged(true);
// 追击行为的速度/阶段声明归本能力(AI 只触发能力,不做这些执行)
if (_enemy.Nav != null && _enemy.Stats != null)
_enemy.Nav.SetSpeed(_enemy.Stats.RunSpeed);
_enemy.SetAiPhase(AiPhase.Chase);
if (_loopClip.Clip != null)
_animancer.Play(_loopClip);
@@ -55,6 +55,7 @@ namespace BaseGames.Enemies.Abilities
{
if (_contactDamage != null)
_contactDamage.enabled = false;
_enemy.SetEngaged(false);
_enemy.Locomotion?.Stop();
}
}