2011-11-22 160 views
0

在我的Android遊戲中,我檢測到球和線的碰撞,但我不知道如何改變與線角度有關的球速度。球線碰撞

if(ball.collidesWith(line)){ 
    ball.nextTile(); 
    ball.mPhysicsHandler.setAngularVelocity(65); 
    float xvelo=ball.mPhysicsHandler.getVelocityX(); 
    float yvelo=ball.mPhysicsHandler.getVelocityY(); 
    double lineAngle = Math.atan2(line.getY2() - line.getY1(), 
            line.getX1() - line.getX2()) * 180/Math.PI; 

    ??????????????????????????????? 

} 
+0

OoOo這聽起來像物理。堅持我現在正在參加那個課,我在這附近有一些筆記... – Jack

+3

這可能會讓你開始:http://stackoverflow.com/questions/345838/ball-to-ball-collision-detection-and -handling – ImR

+0

這是一個物理問題(如何計算新的速度和角度,或者你問如何實現新的速度和角度? –

回答

1

這是一個物理問題,而不是一個編程問題。對於任何彈性碰撞(我假設你想保持相同的速度在球上,只是改變它的方向),入射角(球進入線的角度)是反射角的角度(角度球離開線)

所以,如果你有一個球與線相撞,測量線和球的路徑之間的角度,並且走的路徑將是(180-角 - 發生率)假設你正在使用度數。如果你使用弧度,它是(2pi-入射角)。

如果你的線條是直線向上/向下或向右/向左,你只需要翻轉球速度的x/y分量。如果不是的話,你會按照上面的描述做一些觸發。

+0

你的意思是彈性而非無彈性的。 – toto2

+0

我總是得到兩個混淆!感謝您的收穫,我正在編輯我的答案。 – Kane