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:
2026-07-09 16:22:54 +08:00
co-authored by Claude Opus 4.8
parent d0f69b0599
commit 790595d8de
3 changed files with 37 additions and 10 deletions
@@ -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;
}