2016-03-28 20 views
1

ここでは、画面上で正方形を動かすために書いたアルゴリズムです.XcenterとYcenterは正方形の中心です。 speedXは水平スピード、speedYは垂直スピードです。角の増減速度

while (true) 
      { 
       int keyState = getKeyStates(); 

       // Update the ball's position 
       xCenter += speedX; 
       yCenter += speedY; 
       // Check if the ball hit the bound. 'Reflect' the ball if so. 
       if (xCenter > xMax) 
       { 
        xCenter = xMax; 
        speedX = -speedX; 
       } 
       else if (xCenter < xMin) 
       { 
        xCenter = xMin; 
        speedX = -speedX; 
       } 
       if (yCenter > yMax) 
       { 
        yCenter = yMax; 
        speedY = -speedY; 
       } 
       else if (yCenter < yMin) 
       { 
        yCenter = yMin; 
        speedY = -speedY; 
       } 

スピードを上げるためのアルゴリズムは何でしょうか。 speedX ++は、水平方向に増加するだけなので、望みの結果は得られません。

ありがとうございます。

+0

方向を同じに保つには、両方のコンポーネントを比例して増やす必要があります。 –

+0

私は知っていますが、私はどのように把握できません。最初にx ++を書いてからy ++を書いた場合、それらは順番にxの方向を変えてからyを順番に実行します。ただし、それらは一緒に発生する必要があります –

+0

速度の概念を方向の概念から分離する必要があります。そのままですが、 'speedX'が-2であれば、' speedX ++ 'は-1に減速します。もう一度やって、四角形が死んで止まる(水平になる)。 –

答えて

0

これらのX、Yの位置を順番に増減できます。変数を設定しても正方形は移動しないためです。しかし、アクションに新しいポジションを適用すると、スクエアはすぐに新しい場所に移動します。

つ以上の提案

あなたは、正方形の境界の外に起こっている見つけた場合、それは実際に反対側から見える必要があります。手段if (xCenter > xMax)セットxCenter = xMinとその逆