You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:24:03