XNA中的方向和角度更新问题

本文关键字:更新 新问题 方向 XNA | 更新日期: 2023-09-27 18:28:55

我一直在尝试制作一款塔防游戏,让暴民以给定的速度移动到一个目的地,而现在的设置方式与updateAngle()方法发生了一些奇怪的事情,我不确定。

    // Destination is represented by Coordinates[index]
    public void Update(GameTime time)
    {
        Position.Y -= (float)(time.ElapsedGameTime.TotalSeconds * velocity * Math.Cos(angle));
        Position.X += (float)(time.ElapsedGameTime.TotalSeconds * velocity * Math.Sin(angle));
        float remainingX = Math.Abs(Destination.X - Position.Y);
        float remainingY = Math.Abs(Destination.Y - Position.Y);
        if (remainingX < 2 && remainingY < 2)
        {
            index++;
            if (index == Coordinates.Count - 1)
            {
                End = true;
            }
            else
            {
                updateAngle();
            }
        }
    }
    private void updateAngle()
    {
        angle = (float)Math.Atan((Position.Y - Destination.Y) / (Position.X - Destination.X));
    }

XNA中的方向和角度更新问题

如果位置和目的地正确,这会给出正确的角度:

angle = Math.Atan2(Destination.Y-Position.Y, Destination.X-Position.X)