4

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

到目前为止,我能够旋转角度,但我不知道如何让坦克向前移动。我已经尝试过类似的东西。

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

但当然,这只会让它上升,无论角度如何。有什么简单的解决办法吗?

4

3 回答 3

4

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

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

(毫秒或秒,取决于您使用哪种测量值来测量油箱速度。

于 2012-11-26T10:40:56.370 回答
2

假设 0,0 在左上角并且 0 度在上:

var deltaX = Math.Sin(angleRad) * distance;
var deltaY = -Math.Cos(angleRad) * distance;
于 2012-11-26T10:27:46.817 回答
0

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

于 2012-11-26T10:45:28.987 回答