Python 有没有一种方法可以杀死一个Pygame精灵而不必在一组中杀死它?

Python 有没有一种方法可以杀死一个Pygame精灵而不必在一组中杀死它?,python,pygame,sprite,Python,Pygame,Sprite,我有一个单球精灵,我真的不需要一个团体。我想将该精灵设置为在它到达屏幕末端时被删除(或杀死),这样它也会生成另一个精灵。我试图在没有团队的情况下完成这项工作,我想知道这是否可行。谢谢你的专业知识 我在sprite类的更新方法中尝试了self.kill()和kill.self。那没用。我试图在应用程序的屏幕更新循环中执行一次终止操作。那没用。我做了广泛的研究,所有的答案只有在使用小组时才有。我还尝试过“if not pygame.surface.rect.contains(Ball())”,但没有

我有一个单球精灵,我真的不需要一个团体。我想将该精灵设置为在它到达屏幕末端时被删除(或杀死),这样它也会生成另一个精灵。我试图在没有团队的情况下完成这项工作,我想知道这是否可行。谢谢你的专业知识

我在sprite类的更新方法中尝试了self.kill()和kill.self。那没用。我试图在应用程序的屏幕更新循环中执行一次终止操作。那没用。我做了广泛的研究,所有的答案只有在使用小组时才有。我还尝试过“if not pygame.surface.rect.contains(Ball())”,但没有成功。(有点像这样,我尝试了几种不同的表达方式。)


我希望结果停止计算球的矩形,但它一直在计算,因此我认为它没有被删除。

如果不使用
类,调用
Sprite.kill
方法没有意义。它所做的只是将精灵从其所有组中移除。调用
kill
不会神奇地将
精灵从游戏中移除

如果您想删除
Sprite
,只需停止使用它:停止在
update\u屏幕中调用
ball.blitme()
ball.update()
函数,或者用Sprite类的新实例替换
ball

<>但是考虑开始实际使用<代码>组< /代码>类。这会让你的生活更轻松

检查球是否在屏幕内,而不是

if not pygame.surface.rect.contains(Ball())
使用

在球的更新方法中
pygame.display.get_surface()
将显示屏幕表面,
get_rect()
将显示该
表面的
rect
,并且
contains()
将检查
球的
rect
是否仍在屏幕内

然后我们为球设定一个新的位置


还要注意的是,在精灵类中通常不需要
x
y
属性,因为位置已经存储在
rect
属性中。

您是否考虑过不杀死它,下次需要球时只需重新使用同一对象?我如何重用它?我让它掉下来,它要么会离开屏幕,要么会与可控角色发生碰撞。谢谢!这帮了大忙。很抱歉延迟,我们正在进行调整以使其正常工作。
if not pygame.surface.rect.contains(Ball())
if not pygame.display.get_surface().get_rect().contains(self.rect):
    self.rect.center = (whatever_new_position, ....)