Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 球线碰撞_Java_Android - Fatal编程技术网

Java 球线碰撞

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();

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

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

}

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

因此,如果一个球与直线碰撞,测量直线与球的路径之间的角度,假设使用度,则离开的路径将是(180-入射角)。如果你使用弧度,它是(2pi-入射角)


如果你的直线是直线上/下或右/左,你可以翻转球速度的x/y分量。如果没有,您将进行如上所述的触发。

ooo这听起来像物理。等一下,我正在上那门课,我在这附近有一些笔记……这可能会让你开始:这是一个物理问题吗(如何计算新的速度和角度,或者你在问如何实现新的速度和角度?解决这类问题的最常用方法是将球的速度分成两个垂直分量——一个平行于直线,另一个垂直于直线。然后你可以有两个比例因子——每个分量一个-这种方法的另一个好处是数学变得更加简单——对你的大脑和CPU来说都是如此!你的意思是弹性而不是非弹性。我总是把这两个问题弄糊涂了!谢谢你的帮助,我正在编辑我的answ呃。