C# 向前移动角度XNA

C# 向前移动角度XNA,c#,xna,C#,Xna,我想向前移动一个物体,这取决于它所面对的角度,在这种情况下,它是一个坦克。 所以我想做的是: 按下W键时,油箱必须向前移动。 当我按下A或D时,它会旋转角度 到目前为止,我能够旋转角度,但我不知道如何使坦克向前移动。 我试过这样的方法 if (key.IsKeyDown(Keys.W)) { TankPos.Y = TankPos.Y - 4; } 但当然,这只会使它上升,无论角度如何。任何简单的解决方案?假设0,0为左上角,0度为上: var deltaX = Math.Sin(an

我想向前移动一个物体,这取决于它所面对的角度,在这种情况下,它是一个坦克。 所以我想做的是:
按下W键时,油箱必须向前移动。
当我按下A或D时,它会旋转角度

到目前为止,我能够旋转角度,但我不知道如何使坦克向前移动。 我试过这样的方法

if (key.IsKeyDown(Keys.W))
{
    TankPos.Y = TankPos.Y - 4;
}

但当然,这只会使它上升,无论角度如何。任何简单的解决方案?

假设0,0为左上角,0度为上:

var deltaX = Math.Sin(angleRad) * distance;
var deltaY = -Math.Cos(angleRad) * distance;

详细说明花费者的答案,并根据您是否使用固定时间步长,您还需要将增量乘以自上一帧以来经过的时间

var deltaX = Math.Sin(angleRad) * tankSpeed * gameTime.ElapsedGameTime.Milliseconds;
var deltaY = -Math.Cos(angleRad) * tankSpeed * gameTime.ElapsedGameTime.Milliseconds;

(毫秒或秒,取决于你对坦克速度的测量。

你在a/d时是在旋转摄像机还是在旋转坦克?如果你只旋转坦克,它会很快离开摄像机。如果你旋转摄像机,那么你可以使用摄像机方向向量的x和y分量来获得坦克移动的方向搬进来