我想根据它所面对的角度向前移动一个物体,在这种情况下它是一辆坦克。所以我想做的是:
当我按下W时,坦克必须向前移动。
当我按 A 或 D 时,它会旋转角度。
到目前为止,我能够旋转角度,但我不知道如何让坦克向前移动。我已经尝试过类似的东西。
if (key.IsKeyDown(Keys.W))
{
TankPos.Y = TankPos.Y - 4;
}
但当然,这只会让它上升,无论角度如何。有什么简单的解决办法吗?
详细说明花费者的答案,并且根据您是否使用固定时间步长,您还需要将增量乘以自上一帧以来经过的时间。
var deltaX = Math.Sin(angleRad) * tankSpeed * gameTime.ElapsedGameTime.Milliseconds;
var deltaY = -Math.Cos(angleRad) * tankSpeed * gameTime.ElapsedGameTime.Milliseconds;
(毫秒或秒,取决于您使用哪种测量值来测量油箱速度。
假设 0,0 在左上角并且 0 度在上:
var deltaX = Math.Sin(angleRad) * distance;
var deltaY = -Math.Cos(angleRad) * distance;
您在 a/d 时是在旋转相机还是在旋转水箱?如果你只旋转坦克,它会很快离开相机。如果您正在旋转相机,那么您可以使用相机方向矢量的 x 和 y 分量来获得坦克移动的方向。