我正在尝试使用四叉树进行 2D 碰撞检测,但我对如何实现它有点困惑。首先,我有一个四叉树,它包含四个子树(一个代表每个象限),以及一组不适合单个子树的对象。
当在树中检查对象的碰撞时,我会做这样的事情(感谢QuadTree 的 2D 碰撞检测):
- 检查对象是否与当前节点中的任何对象发生冲突。
- 对于空间与对象重叠的任何子树,递归。
要查找四叉树中的所有碰撞:
- 检查当前节点中的每个对象与当前节点中的其他对象。
- 针对每个子树检查当前节点中的每个对象。
插入四叉树:
- 如果对象适合多个子树,则将其添加到当前节点,然后返回。
- 否则,递归到包含它的任何子树。
更新四叉树:
- 递归到每个子树。
- 如果当前节点中的任何元素不再完全适合当前树,则将其移至父节点。
- 如果当前节点中的任何元素适合子树,则将其插入子树。
这可以吗?可以改进吗?