2015-11-18 43 views
-1

我正在嘗試做一個Pong遊戲,並且我碰到了碰撞檢測。問題來自下面的方法。我無法弄清楚我的邏輯錯誤。注意:player1和Circle都是矩形的對象,我正在使用它們可以使它們相互交互。 謝謝。碰撞邏輯錯誤

public void moveBall(){ 
    ball.x += speed; 

    //checks if the ball intersects with the paddle Player 1 
    if (ball.intersects(player2) && ball.getY() >= player2.getY() && ball.getY() <= player2.getY() + 70){ 
     speed *= (-1); 
    } 


} 
+0

你的'intersects()'方法做什麼? – azurefrog

+1

我猜這是一個複製/粘貼錯誤,但是你的評論說你正在檢查玩家1的交集,並且代碼看起來像是在檢查玩家2. –

+1

@azurefrog看起來'ball'可能是一個Rectangle,在這種情況下很難說出沒有代碼/解釋的其餘部分 – phflack

回答

0

您的問題可能是,一旦球觸及的球員,速度乘以-1,那麼,球移動。然而,球不動足到目前爲止,衝突可能再次註冊導致速度再次乘以-1。爲了解決這個問題只是轉移球不斷變化的「速度」的值之後

解決方案:

public void moveBall(){ 
ball.x += speed; 

//checks if the ball intersects with the paddle Player 1 
if (ball.intersects(player2)){ 
    speed *= (-1); 
    ball.x += 3*speed; 
} 

}

而且,你不需要行ball.getY() >= player2.getY() && ball.getY() <= player2.y作爲Rectangle.intersects方法還檢查y座標匹配。

希望這有助於。

+0

我試過了你上面說的,但它仍然不起作用。出於某種原因,一旦碰到相同的X軸而不是Y,球就會發生偏轉。 – yj2000

+0

只是更改了一些變量名並發現了我的問題。謝謝! – yj2000

+0

您的歡迎:) – Paul