gpt4 book ai didi

java - 检测多个物体之间碰撞的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-30 07:28:59 25 4
gpt4 key购买 nike

这是我在大学作业中尝试做的事情,我对它很陌生,但我已经阅读了很多关于这个主题的文章。请有人用最简单的方式解释如何做我想做的事情,以便我能够理解需要发生什么?

我有一个对象数组,每个对象都在屏幕上画一个圆;我让它们在边界框内弹跳,但现在我想让它们发生碰撞。

我写了下面的方法,它正在工作......但仅此而已。球偶尔会卡住并相互“抖动”,我不知道为什么会这样。另外,我认为我正在检查不必要的碰撞(?)。

void handleObjectCollision() {

for(int i = 0; i < _myBtns.length; i++) {

if(i != _id) {

float dx = _myBtns[i].x - x;
float dy = _myBtns[i].y - y;
float distance = sqrt(dx*dx + dy*dy);

if(distance < r * 2) {
xS = -xS;
yS = -yS;

// Debug
// println("Collision!");
}

}

}

我的类(class)和相关部分的完整粘贴可以在这里找到:http://pastebin.com/eJawiHAE .

此外,这是我一直在研究的一个例子,http://processing.org/learning/topics/bouncybubbles.html .

我正在尝试实现简单的弹跳(速度反转?),而无需添加物理或使用 vector ,因为我希望首先能够以最简单的形式理解正在发生的事情。

谢谢。

最佳答案

你不能仅仅反转你的物体移动的方向,因为碰撞几乎可能发生在它的后面,在这种情况下,反转会使其再次进入与它碰撞的物体的碰撞过程。这解释了您看到的抖动。您需要考虑碰撞发生的方向,并相应地调整您的方向 vector ,使用物理学中称为“弹性碰撞”的相关物理公式。

在这里,检查一下:http://en.wikipedia.org/wiki/Elastic_collision

关于java - 检测多个物体之间碰撞的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8810890/

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