因此,我有兩個單獨的檢測碰撞的球員槳和敵人槳和球員槳我已經評論了什麼似乎是需要根據擊中的地點反彈球的數學計算。沒有評論的代碼只是在每次反彈時反轉速度(速度是一個浮點值)時您所期望的彈回屏幕上的球。所以對於初學者來說,註釋掉的配方實際上是否是正確的配方,如果是這樣的話,它是否需要在與槳碰撞時應用於xSpeed和ySpeed?如何讓一個球從一個特定的角度反彈到一個特定的角度,這取決於它撞擊槳葉的位置?
當我看到這個公式時,它將BallAngle或PaddleAngle作爲參數(我不記得說實話了)。現在,如果這是一個正確的公式,我怎麼才能得到這個角度呢?我只是在那裏使用整數(用於測試),因爲我不知道如何獲得角度。
if (ball.getPosition().x < (player.getPosition().x) //PLAYER COLLISION DETECTION
&& (ball.getPosition().y + (ball.getRadius() * 2)) >= player.getPosition().y
&& ball.getPosition().y <= (player.getPosition().y + player.getSize().y))
{
xSpeed = -xSpeed;
//xSpeed = xSpeed*cos(91);
//ySpeed = ySpeed*sin(90);
ball.move(xSpeed, ySpeed);
}
if (ball.getPosition().x > enemy.getPosition().x - 30 //ENEMY COLLISION DETECTION
&& (ball.getPosition().y + (ball.getRadius() * 2)) >= enemy.getPosition().y
&& ball.getPosition().y <= (enemy.getPosition().y + enemy.getSize().y))
{
xSpeed = -xSpeed;
ball.move(xSpeed, ySpeed);
}
你期望這段代碼做什麼?它實際上做了什麼?顯示其輸入和輸出的例子。 –
現在的代碼只是反轉速度,所以當球擊中槳時,它會以90度的角度反彈。顯然,90度角應該基於球撞擊槳的位置(離中間越遠,角度越大)。 – BuzzKill
爲什麼角度取決於撞擊槳的位置?槳是否意圖彎曲? – sjdowling