我目前正在研究2D射击类型的游戏,而我正在使用四叉树进行碰撞检测。我写了一个工作四元树,正确地将我的演员推入他们属于树的节点/叶子。但是,我遇到了一些问题。
首先,我如何实际使用我的四叉树来选择对象应该测试碰撞的其他对象?我不确定如何做到这一点。
这提出了第二个问题。假设我在节点中有一个不是另一个节点的邻居的对象,但是该对象足够大以至于跨越几个节点,我如何检查实际的冲突,因为我猜测树可能认为它不是足够接近与“远方”节点中的物体碰撞?是否应将完全适合节点的对象保留在父节点中?
在我的游戏中,大多数物体大小不一,四处移动。
我已经阅读了很多关于四叉树的博客/文章,但大多数只是解释如何构建一棵不是我正在寻找的树。
欢迎任何帮助/信息。
答案 0 :(得分:15)
您可以建立一个约定,每个元素都包含在完全包含它的最小四叉树节点中。
然后,当您检查节点A的冲突时,请按以下步骤操作:
请注意,对象越小,它们在四叉树中的位置就越深,因此它们的比较频率会降低。