Python OOP sprite.Sprite.kill确实删除了它

时间:2016-07-05 15:55:37

标签: python oop pygame sprite kill

我使用Python 2.7和pygame使用OOP和sprite类创建Asteroid游戏。我有一个球员和小行星。当我使用spritecollide检测到玩家和任何小行星之间的碰撞时,小行星将从群组中移除,我会使用kill删除玩家。玩家从屏幕上消失但仍然隐藏在屏幕上。当另一个小行星经过玩家曾经的位置时,它会记录一次碰撞并消失,好像玩家还在那里一样。这是正确的行为吗?如何完全从游戏中移除玩家?或者我只是将其移出游戏框架?

1 个答案:

答案 0 :(得分:1)

来自the documentation

  

kill()

     

Sprite将从包含它的所有组中删除。这不会改变关于Sprite状态的任何信息。调用此方法后,可以继续使用Sprite,包括将其添加到Groups。

这意味着杀死你的玩家只会将其从所有精灵组中删除。我假设您使用群组进行blit,这就是为什么您的播放器不再被绘制的原因。但是,如果您在游戏循环中的某个位置检查特定玩家对象是否与任何小行星发生碰撞,这仍然有效。

你如何处理这取决于你想要的游戏行为。 比赛应该结束吗?然后退出主循环并在屏幕上绘制游戏。 玩家应该重生吗?然后重置播放器的位置并再次将播放器精灵添加到相应的组中。