You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 02:52:06