0
我有一個圓圈(沒有玩家控制)和一個半圓圈(玩家控制)不正確的碰撞。檢測方法工作正常,並在碰撞發生時返回一個布爾值。但是,該反應無法正常工作。我注意到最多的問題是,當半圓不移動時,圓不經過改變而直接穿過半圓。圓圈和半圓都有speedX和speedY。作爲參考,班級球是圈子,而班級球員是半圈。 我的代碼如下:如何處理java中圈和半圓碰撞的反應?
if(contact==true)
runBounce();
public void runBounce()
{
int speedX=ball.getSpeedX()+(player.getSpeedX()/2);
int speedY=ball.getSpeedY()+(player.getSpeedY()/2);
if (player.getSpeedX()==0 && player.getSpeedY()==0)
{
bounceOff();
}
else
{
ball.setSpeedX(speedX);
ball.setSpeedY(speedY);
}
}
public void bounceOff()
{
ball.setSpeedX(ball.getSpeedX()*-1);
ball.setSpeedY(ball.getSpeedX()*-1);
}
爲什麼我的代碼不工作,我還能有什麼辦法解決?
可能是速度比對象的大小大?這導致他們「跳過」對方? –
您可以舉一個例子,說明當你遇到問題時,半圓正在進行的「x和y」速度以及圓周的速度「x和y」是多少,以及你期望發生的事情沒有發生? –
最後一行:ball.setSpeedY(ball.getSpeedX()* - 1); ....第二個應該是Y不是X –