fix(scaffold): 碰撞体底部对齐 y=0(原点=脚底) 修正 NavAgent 有效位置 + 追击改回nav
根因: NavAgent 用 transform 原点(0,0)判定是否在导航段上,而脚手架 CreateBodyCollider 未设 offset(碰撞体居中,底部在-size.y/2),站到地面时原点悬在导航线上方→HasValidPosition=False。 修复: AlignColliderBottomToPivot 让所有身体/HurtBox/HitBox 碰撞体底部对齐 y=0(通用规则, 角色/敌人/Boss 同理);同步修 E001 prefab 碰撞体 offset。验证: 敌人落地后 navValid=True(自动)。 追击能力改回 nav 寻路(MoveTo),不再直接移动。 注: 导航路径"跟随"仍有既有集成问题(UpdatePath 后 agent 不跟随可达路径),需另行排查。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -30,12 +30,10 @@ namespace BaseGames.Enemies.Abilities
|
||||
_contactDamage.enabled = true;
|
||||
|
||||
// 追击直到玩家消失或被 AI 中断(退出追击的决策归 AI,见 EnemyBrainContext.InterruptAbilities)。
|
||||
// 地面爬行怪用直接水平爬行追击(朝玩家方向),不依赖 A* 寻路。
|
||||
float runSpeed = _enemy.Stats != null ? _enemy.Stats.RunSpeed : 0f;
|
||||
// 小怪走 nav 寻路(EnemyBase.MoveTo → 导航),寻路正确性依赖脚手架把碰撞体底部对齐 y=0。
|
||||
while (_enemy.PlayerTransform != null)
|
||||
{
|
||||
float dir = _enemy.PlayerTransform.position.x >= _enemy.transform.position.x ? 1f : -1f;
|
||||
_enemy.MoveInDirectionWithSpeed(dir, runSpeed);
|
||||
_enemy.MoveTo(_enemy.PlayerTransform.position);
|
||||
yield return null;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user