2013-12-22 87 views
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); 
} 

爲什麼我的代碼不工作,我還能有什麼辦法解決?

+0

可能是速度比對象的大小大?這導致他們「跳過」對方? –

+0

您可以舉一個例子,說明當你遇到問題時,半圓正在進行的「x和y」速度以及圓周的速度「x和y」是多少,以及你期望發生的事情沒有發生? –

+1

最後一行:ball.setSpeedY(ball.getSpeedX()* - 1); ....第二個應該是Y不是X –

回答

2

你最後一行是你的問題......你已經使用Y上的倒序X與錯字。