我正在写一个小的生存游戏。一波又一波地来,更多的敌人来了,你的工作是在他们对你做同样的事情之前把它们消灭掉。
我遇到的问题是碰撞检测。我有一个“敌人”课程,我想确保没有一个敌人可以互相穿过。Pygame 的碰撞设施似乎不能满足我的需要。该函数尤其是敌人类中的“no_merge”函数。目前,它是空白的,但我已经尝试了我可以在 pygame 文档中找到的所有不同的碰撞检测变体,但我似乎无法为属于同一组的每个精灵找到任何测试。
我知道为什么我的代码中的 no_merge() 函数不起作用,它会不断检查与自身的碰撞,这将始终保持正确,我似乎无法找到(或思考)正确的方法。
一些额外的信息:这将是大量的精灵,最小的数字约为 20,最大的数字约为 100。
这是现在的功能:
def no_merge(self):
"""Makes sure that the enemies cannot walk through each other"""
if pygame.sprite.spritecollide(self,enemy_list,False) and enemy != self:
do collision stuff.
这被插入到主循环中,如下所示:
while done == False # (this line hasn't indented properly on stack overflow)
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
for bullet in bullet_list:
bullet.rect.x +=4
for enemy in enemy_list:
enemy.chase()
enemy.in_screen
enemy.destroy()
enemy.no_merge()