嗨,我是python的新手(已经使用了几个月了),我想知道如何从列表中获得更快的碰撞。我有一个简单的二维物体阵列的地图和一个相机矩形,检查是否有任何矩形物体发生碰撞,我试图做同样的球员运动,但它落后于地狱,即使在一个小的120乘90地图 那么,我该如何通过使用CPU来加快速度呢。你知道吗
for x in range(gridLength):
for y in range(gridHeight):
if cameraRect.colliderect(grid[x][y].Rect):
grid[x][y].draw(screen,((x * 16 + (WINDOWWIDTH / 2 - 16)) - playerRect.left),((y * 16) - playerRect.top + (WINDOWHEIGHT / 2 - 16)))
使用空间索引,如四叉树。这允许您有效地查询哪些对象与给定的AABB(轴对齐边界框)发生碰撞,然后您可以在对象不等于AABB(例如,如果它们是圆)时进行更复杂的测试。你知道吗
下面是pygamewiki的一个示例实现:http://www.pygame.org/wiki/QuadTree(您必须撤消示例代码中的HTML实体引用)
或者,你可以加入一个别人写的物理引擎。你知道,写一个物理引擎需要大量的工作。即使是简单的2D游戏,你也可能会惊讶于它的工作量。你知道吗
如果对级别数据使用平铺,也可以将平铺存储在二维数组中,并检查给定矩形中的非零平铺。比如:
相关问题 更多 >
编程相关推荐