向前移动XNA角度

时间:2012-11-26 10:23:35

标签: c# xna

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

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

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

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

3 个答案:

答案 0 :(得分:4)

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

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

(毫秒或秒,取决于您用于水箱速度的测量值。

答案 1 :(得分:2)

假设0,0是左上角,0度是向上:

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

答案 2 :(得分:0)

您在a / d时是否正在旋转相机或水箱?如果您只旋转水箱,它将很快离开相机。如果您正在旋转相机,那么您可以使用相机方向矢量的x和y分量来获取水箱移动的方向。

相关问题