3

我在业余时间从事“游戏”,几乎纯粹是作为一种学习体验,并且正处于需要在玩家实体和敌人实体之间进行碰撞检测的地步。

玩家和所有敌人都共享一个基类 ,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))。有没有更好的办法?

4

1 回答 1

6

您想使用某种空间索引或结构,以便快速找到彼此靠近的元素。

一种常用的数据结构是四叉树

于 2012-11-16T19:58:16.967 回答