在我的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 :(得分:1)
这更像是一个物理问题,而不是一个编程问题。对于任何弹性碰撞(我假设你想要在球上保持相同的速度,只需改变它的方向),入射角(球进入线的角度)与反射角度(角度相反)球远离线路)
因此,如果您的球与线发生碰撞,请测量直线与球的路径之间的角度,并且假设您使用度数,路径将会(180° - 入射角)。如果你使用的是弧度,那就是(2pi - 入射角)。
如果您的线条是直线向上/向下或向右/向左,您只需翻转球速度的x / y分量即可。如果没有,你将如上所述做一些触发。