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 に答える