2011-11-22 150 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