-1

これは無知な質問かもしれませんし、奇妙な質問かもしれません。

私の質問は、このコードが機能しない理由です:

            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 ゲームのコントロールです。物を動かすためのものです。

記録のために、これは重要な質問ではありません。私のコードは機能します。なぜそれがそのように機能するのか、私は単純に興味があります。

4

1 に答える 1

1

最初の例では、位置関数を呼び出す前に、まず一部 (オブジェクトの速度) を減算しています。

いいえ、最初のバージョンでは、速度を差し引くのではなく、古い位置を差し引いています。

あなたが説明するコードは次のとおりです。

player.setY((-player.velocity) + player.getY());

そしてそれはうまくいくでしょう。

于 2012-10-01T19:42:22.540 に答える