我正在闲暇时间做一个“游戏”,几乎纯粹是作为一种学习经历,并且正处于玩家实体和敌方实体之间的碰撞检测需要发生的地步。
玩家和所有敌人都共享一个基类Entity
,这使他们可以访问x,y,height和width属性。使用这些,我可以为每个实体构建一个矩形,并尝试找到重叠。如果存在重叠,则发生碰撞。
因此,根据上面的逻辑,我们可以假装以下数据在矩形数组中:
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))。还有更好的方法吗?