我正在制作一个自定义精灵类(而不是pygame.Sprite)的上下左右滚动瓷砖游戏。
精灵碰撞(collide())函数导致帧速率降低(我使用了cProfile进行测试)。
请帮助我找出问题所在。
该函数一般按以下方式运行:
def collide(self):
for tile in tiles:
if tile.type == 'wall':
if self.getDist(tile.rect.center) < 250:
if self.rect.colliderect(tile.rect):
return True
- 在精灵和所有墙砖之间找到距离向量很耗时间。
- 我认为仅针对250像素内的瓷砖运行
rect.colliderect()
会更快,但显然不是这样。 - 我不包括源代码,因为我正在寻求解决碰撞检测效率问题的更多概念性答案。
一个可能的解决方案是创建不同组瓷砖的分离列表(如wallList、groundList),但我真的相信我在搜索瓷砖对象列表方面存在根本性问题。
我是StackOverflow的新手,所以如果我的问题结构/缺乏源代码冒犯了您,请谅解。