有人可以帮我了解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.... }
但是我想这将是一个“菜鸟”解决方案,而且看起来很慢。有更好的吗?
首先要具有的实际功能是检测球与物体之间是否存在碰撞。
为了提高性能,最好实现一些粗略的碰撞检测技术,例如边界矩形,如果需要检测到碰撞,则需要一种更精确的检测技术,这样您的函数将运行得更快一些,但使用相同的循环。
可以帮助提高性能的另一个选项是对您拥有的对象进行一些预处理。例如,您可以将整个区域像通用表一样分成多个单元格,并存储特定单元格中包含的适当对象。因此,要检测碰撞,您要检测球所占据的单元,从这些单元中获取物体并使用碰撞检测功能。
为了进一步提高速度,您可以实现2d-tree,quadtree或R-tree。