2

簡単なPongゲームを作成し、次のようにゲームロジック内の位置に可変ballSpeedを追加してボールを移動します。update

void Update()
{
    ballPosition += ballSpeed;
}

問題は、ballSpeedD3DXVECTOR3コンポーネントを使用していることです。x = 10; y = 10; z = 0;

重要なのは、ウィンドウの解像度を上げると、移動するピクセルが増える640:480ため1280:1024、ボールの移動が遅くなるということです。

そして私の質問は、モニターの解像度に関係なく、ボールを同じ速度で動かすにはどうすればよいですか?

4

3 に答える 3

2

おそらく、新しい座標系を導入することができます。(0,0)から(1,1)まで言います。この座標系でボールを移動し、これらの座標の位置を画面のピクセルにマップしてボールを描画します。座標系のアスペクト比をウィンドウと同じにする必要があります。

于 2013-01-11T16:40:10.307 に答える
1

You can scale the speed by the ratio of the actual resolution to the development resolution. Since the gameplay in Pong is dominated by the horizontal motion, you can use the ratio of the widths:

ballSpeed = int(ballSpeed * width / 640.0);

You will probably want to do the same to the size of all the screen elements too, such as the ball.

This all assumes that you define "speed" as the time taken to cross the entire screen, not to cover a given number of inches. That calculation would depend on more than just the resolution.

于 2013-01-11T17:01:55.543 に答える
1

速度を適切にシミュレートするために、最初に画面座標と論理座標の間に変換を導入し、ボールの位置を定数ではなく更新する必要がありますが、最後の更新からの時間を考慮に入れてください。

于 2013-01-11T16:47:07.767 に答える