![]() |
1
4
你找到你自己了
|
![]() |
2
1
正如1800条信息所说,你需要减少比较的次数。 把比赛场地分成几个区域是个好主意。我可以想象,将当前位置与区域边界进行比较以及从适当的集合中添加/删除僵尸所需的时间是值得的。假设他们通常会走直线,他们不应该太频繁地改变区域。 我们有一个问题,区域之间可能发生碰撞。根据这个想法,你可以把屏幕分成4个区域,然后再分成9个区域。想象一下,一块贴在十字架上的tic-tac趾板。这是一张糟糕的图纸,但是:
这样,每个僵尸一次在两个区域中,一个方案中的每个边界都被另一个区域覆盖。你甚至不必再次检查所有的僵尸,因为要么我们死了,要么他们死了。因此,唯一的双重处理是单一处理
我能很快看到的另一件事是,即使你已经死了,你仍然可以循环使用其余的元素:
它可能不会节省大量处理,但如果您:
相反
|
![]() |
3
1
您的基本碰撞检测算法 O(n^2) 复杂性
按拓扑(按距离)对实体进行排序。你想把这些分开 僵尸不仅仅是按地理位置分类的,而是要对它们进行分类,以便只有在 他们彼此“接近”。您希望忽略空区域。 考虑一个树结构到你的地区。当一个区域有多个 N 对于僵尸,可以将区域分割得更小,直到区域半径接近碰撞距离。使用地图查找区域,并检查给定区域(以及任何“足够近”区域)中的所有僵尸。 你可能想要 待到<=日志(n)。。。 |
![]() |
4
0
也许你应该把游戏场地分成几个区域,只检查同一区域内的僵尸之间的碰撞。您需要减少比较的次数。 |
![]() |
5
0
它让我想起了这条线索:
No idea what could be the problem!!
collision detection help
我指的是维基百科的碰撞检测文章。
|
![]() |
Fabio Luis · 处理3.3.7 draw()停止循环 6 年前 |
![]() |
Alberto Zavala · 从二维到三维图形 6 年前 |
![]() |
ddalcanto · 添加重复图像可大大降低帧率 6 年前 |
![]() |
Coding King2 · 图像未出现。。。JS(p5.JS) 6 年前 |
![]() |
mackycheese21 · 处理box2d断言错误 6 年前 |
![]() |
Bekbol · OpenCV+处理+Arduino(人脸跟踪) 6 年前 |
![]() |
W. Mays · 如何量化float类型的值? 6 年前 |
![]() |
NetTemple · 要在循环中用作Pshape的进程字符串名称 6 年前 |