diff --git a/Assets/_Game/Scripts/Enemies/EnemyMovement.cs b/Assets/_Game/Scripts/Enemies/EnemyMovement.cs index 9d4e7483..58ec7df3 100644 --- a/Assets/_Game/Scripts/Enemies/EnemyMovement.cs +++ b/Assets/_Game/Scripts/Enemies/EnemyMovement.cs @@ -507,8 +507,19 @@ namespace BaseGames.Enemies private void UpdateFacing(float dir) { if (Mathf.Approximately(dir, 0f)) return; - if (_isTurning) return; // 转身进行中,忽略新的朝向请求 int newDir = dir > 0f ? 1 : -1; + + // 转身进行中:与当前转身目标同向 → 忽略;不同向 → 重定向(停旧转身重起), + // 不能静默丢弃——否则新意图(如追击朝玩家)被进行中的旧转身(如巡逻边缘翻转)覆盖, + // 造成"朝向与移动方向相反"。(根因修复,惠及 Pace/追击/FaceTarget 所有调用方。) + if (_isTurning) + { + if (newDir == _pendingFacingDir) return; + if (_turnCoroutine != null) StopCoroutine(_turnCoroutine); + _turnCoroutine = null; + _isTurning = false; + } + if (newDir == _facingDir) return; if (_enableTurnAnimation && _animancer != null && _animConfig?.Turn != null)