Godot 4+C#实现2D俯视角敌人向玩家移动的问题求助
问题解决:Godot 4 + C# 2D俯视角敌人向玩家移动
你的敌人移动逻辑核心问题是方向向量计算颠倒,导致敌人实际朝向远离玩家的方向移动,只有在玩家与敌人下方接触时才会因碰撞产生跟随的错觉。
修正后的代码
public override void _PhysicsProcess(double delta) { Move(); MoveAndSlide(); } public void Move() { if (_player != null) { LookAt(_player.GlobalPosition); // 修正方向:玩家位置 - 敌人位置,得到朝向玩家的单位向量 Vector2 direction = (_player.GlobalPosition - GlobalPosition).Normalized(); Velocity = direction * Speed; } else { Velocity = Vector2.Zero; } }
关键说明
- 方向向量的正确逻辑:
目标位置 - 当前物体位置,这样得到的向量才是当前物体指向目标的方向。你之前用当前位置 - 目标位置,得到的是相反方向,敌人会持续远离玩家。 LookAt方法是正确的,它会让敌人朝向玩家,但移动方向错误导致行为异常。- 确保
_player已经正确赋值(比如通过GetNode或场景引用),否则敌人会保持静止。
内容的提问来源于stack exchange,提问作者followeroftheWay
相关产品推荐
相关产品推荐

