球线碰撞

时间:2011-11-22 14:51:16

标签: java android

在我的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;

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

}

1 个答案:

答案 0 :(得分:1)

这更像是一个物理问题,而不是一个编程问题。对于任何弹性碰撞(我假设你想要在球上保持相同的速度,只需改变它的方向),入射角(球进入线的角度)与反射角度(角度相反)球远离线路)

因此,如果您的球与线发生碰撞,请测量直线与球的路径之间的角度,并且假设您使用度数,路径将会(180° - 入射角)。如果你使用的是弧度,那就是(2pi - 入射角)。

如果您的线条是直线向上/向下或向右/向左,您只需翻转球速度的x / y分量即可。如果没有,你将如上所述做一些触发。