Java 球线碰撞
在我的Android游戏中,我检测到球和线的碰撞,但我不知道如何改变球的速度与线的角度Java 球线碰撞,java,android,Java,Android,在我的Android游戏中,我检测到球和线的碰撞,但我不知道如何改变球的速度与线的角度 if(ball.collidesWith(line)){ ball.nextTile(); ball.mPhysicsHandler.setAngularVelocity(65); float xvelo=ball.mPhysicsHandler.getVelocityX(); float yvelo=ball.mPhysicsHandler.getVelocityY();
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;
???????????????????????????????
}
这与其说是一个编程问题,不如说是一个物理问题。对于任何弹性碰撞(我假设你想在球上保持相同的速度,只要改变它的方向),入射角(球进入直线的角度)与反射角(球离开直线的角度)相反 因此,如果一个球与直线碰撞,测量直线与球的路径之间的角度,假设使用度,则离开的路径将是(180-入射角)。如果你使用弧度,它是(2pi-入射角)
如果你的直线是直线上/下或右/左,你可以翻转球速度的x/y分量。如果没有,您将进行如上所述的触发。ooo这听起来像物理。等一下,我正在上那门课,我在这附近有一些笔记……这可能会让你开始:这是一个物理问题吗(如何计算新的速度和角度,或者你在问如何实现新的速度和角度?解决这类问题的最常用方法是将球的速度分成两个垂直分量——一个平行于直线,另一个垂直于直线。然后你可以有两个比例因子——每个分量一个-这种方法的另一个好处是数学变得更加简单——对你的大脑和CPU来说都是如此!你的意思是弹性而不是非弹性。我总是把这两个问题弄糊涂了!谢谢你的帮助,我正在编辑我的answ呃。