gpt4 book ai didi

java - 静态和动态圆之间的碰撞响应

转载 作者:行者123 更新时间:2023-12-01 13:48:54 25 4
gpt4 key购买 nike

这是用 JavaFX 开发的。

有 2 个球 - 一个动态球和一个固定球。第一个球(动态)会从墙壁和任何挡住它的东西上反弹。

第二个球的目的是成为第一个球的障碍。因此,每当第一个球接触第二个球时,第一个球应该立即弹开。目前,弹跳的准确性非常差,我不知道如何解决它。有时第一个球会正确弹跳,但通常它会进入第二个球内部,卡在那里一会儿,然后弹开。下图讨论了这个问题。 enter image description here

这是我用于检测碰撞并响应它的代码:

   //Pythagorean Theorem, to detect collision, by estimating the distance between the two circles
double dx = circle.getLayoutX() - circle2.getLayoutX();
double dy = circle.getLayoutY() - circle2.getLayoutY();
double radii = circle.getRadius() + circle2.getRadius();

double distance = (dx * dx) + (dy * dy);
double minDistance = radii * radii;


// I believe something is missing in the lines below, which is causing the problem.

if (distance < minDistance) { //If circle1(dynamic) collides with circle2(stationary)

c1SpeedX = c1SpeedX * -1; //Inverts direction.

}

我在谷歌上花了几个小时,但找不到答案。我希望有人能够提供解决方案并解释这个问题。提前非常感谢大家!

最佳答案

这可能是因为当球的方向一次又一次反转时,球并不总是有时间退出更大的球。

如果距离 == minDistance:

就像现在一样。

如果距离 < minDistance:

球在较大的球内。那么它应该已经反弹并离开一点了。球应该已经从较大的球移开 sqrt(distance-minDistance)。

关于java - 静态和动态圆之间的碰撞响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20128436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com