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