如何在Pygame中精灵碰撞时仅销毁自身精灵而不销毁碰撞对象
问题原因
pg.sprite.spritecollide() 方法的第三个参数为do_kill,参数值为True时会自动销毁碰撞组(此处为food_sprites)中与当前精灵发生碰撞的所有精灵。你代码中此处传入了True,因此碰撞发生时Food精灵会被自动销毁,叠加你主动调用的self.kill()销毁Cell精灵,就出现了两个精灵同时消失的现象。
修复方案
将Cell类update方法中的碰撞检测代码的第三个参数修改为False即可:
# 修改前 # if pg.sprite.spritecollide(self, food_sprites, True): # 修改后 if pg.sprite.spritecollide(self, food_sprites, False): self.kill()
修改后仅会执行你主动编写的self.kill()逻辑销毁当前Cell精灵,Food精灵不会被自动处理。
内容的提问来源于stack exchange,提问作者Alden
相关产品推荐
相关产品推荐

