一尘不染

Javascript:碰撞检测

javascript

有人可以帮我了解JS中冲突检测的工作原理吗?我不能使用jQuery或gameQuery-已经使用了原型-
因此,我正在寻找非常简单的东西。不要求完整的解决方案,只需为我指明正确的方向。

假设有:

<div id="ball"></div>
and 
<div id="someobject0"></div>

现在球正在移动(任何方向)。“ Someobject”(0-X)已经预先定义,其中有20-60个随机放置,如下所示:

#someobject {position: absolute; top: RNDpx; left: RNDpx;}

我可以创建一个位置为“ someobject(X)”的数组,并在“球”移动时测试碰撞。类似:

for(var c=0; c<objposArray.length; c++){
........ and code to check ball's current position vs all objects one by one....
}

但是我想这将是一个“菜鸟”解决方案,而且看起来很慢。有更好的吗?


阅读 618

收藏
2020-04-25

共1个答案

一尘不染

首先要具有的实际功能是检测球与物体之间是否存在碰撞。

为了提高性能,最好实现一些粗略的碰撞检测技术,例如边界矩形,如果需要检测到碰撞,则需要一种更精确的检测技术,这样您的函数将运行得更快一些,但使用相同的循环。

可以帮助提高性能的另一个选项是对您拥有的对象进行一些预处理。例如,您可以将整个区域像通用表一样分成多个单元格,并存储特定单元格中包含的适当对象。因此,要检测碰撞,您要检测球所占据的单元,从这些单元中获取物体并使用碰撞检测功能。

为了进一步提高速度,您可以实现2d-tree,quadtree或R-tree。

2020-04-25