我在业余时间做一个“游戏”,几乎纯粹是作为一种学习体验,并且在玩家实体和敌人实体之间需要发生碰撞检测的时候。

玩家和所有敌人共享一个基类 Entity ,这使他们可以访问 x、y、高度和宽度属性。使用这些,我可以为每个实体构建一个矩形,并尝试找到重叠部分。如果有重叠,则发生了碰撞。

因此,根据上面的逻辑,我们可以假设以下数据位于 Rectangles 数组中:

X    Y    HEIGHT   WIDTH
------------------------
0    0    25       50
0    50   25       25
0    100  25       30
50   200  25       50
150  250  25       25
150  50   25       30

确定这些实体(矩形)中的任何一个是否与其他实体相交的最快方法是什么?简单地循环遍历数组并将每个元素与其他元素进行比较是不够的(O(n^2))。有没有更好的办法?

最佳答案

您希望使用某种空间索引或结构来快速查找彼此靠近的元素。

一种常用的数据结构是 quadtree

关于java - 在矩形数组中查找重叠的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13423488/

10-14 04:30