これは無知な質問かもしれませんし、奇妙な質問かもしれません。
私の質問は、このコードが機能しない理由です:
if (up == true)
{
SDL_Delay(pause_t);
player.setY(player.velocity - player.getY());
}
if (left == true)
{
SDL_Delay(pause_t);
player.setX(player.velocity - player.getX());
}
ただし、このコードは機能します。
if (up == true)
{
SDL_Delay(pause_t);
player.setY(player.getY() - player.velocity);
}
if (left == true)
{
SDL_Delay(pause_t);
player.setX(player.getX() - player.velocity);
}
2 つのコードの違いは、最初の例では、位置関数を呼び出す前に、最初に一部 (オブジェクトの速度) を減算していることです。このコードを実行すると、軸上で 1 ではなく 10 が移動します。Y 軸のサイズは 10 を超えているため、実際には独自の座標を減算していません。
ただし、コードの 2 番目の部分では、位置関数を呼び出した後、最終的に速度を減算しています。2 番目のコードでは、オブジェクトが 1 ピクセル (速度の整数値) 移動します。
私が何をしようとしているのか疑問に思われる方のために、これらは私の openGL ゲームのコントロールです。物を動かすためのものです。
記録のために、これは重要な質問ではありません。私のコードは機能します。なぜそれがそのように機能するのか、私は単純に興味があります。