我在业余时间从事“游戏”,几乎纯粹是作为一种学习体验,并且正处于需要在玩家实体和敌人实体之间进行碰撞检测的地步。
玩家和所有敌人都共享一个基类 ,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))。有没有更好的办法?