在 pygame 中,重置每个精灵位置的最有效方法是什么?
In pygame, what is the most efficient way of resetting every sprite's position?
我正在尝试使用 pygame 制作一个 典型的平台游戏,但我不确定我应该如何制作死亡序列。我想要它,所以在玩家死亡后,每个精灵的位置都会重置到其原始位置,如果它们完全移动的话。
我尝试使用 pygame.sprite.Group().copy()
进行试验,但我不知道如何使用它,或者它是否适用于我的情况。
我会在 sprite 中存储原始位置的副本,然后按照@furas 的建议通过 reset()
函数重新定位和重新统计 sprite。
例如:
class ResettableSprite( pygame.sprite.Sprite ):
MAX_HEALTH = 100
def __init__( self, image, x, y ):
pygame.sprite.Sprite.__init__( self )
self.image = image
self.rect = self.image.get_rect()
self.start_x = x
self.start_y = y
self.reset()
def reset( self ):
self.rect.x = self.start_x
self.rect.y = self.start_y
self.health = ResettableSprite.MAX_HEALTH
# ... etc.
我正在尝试使用 pygame 制作一个 典型的平台游戏,但我不确定我应该如何制作死亡序列。我想要它,所以在玩家死亡后,每个精灵的位置都会重置到其原始位置,如果它们完全移动的话。
我尝试使用 pygame.sprite.Group().copy()
进行试验,但我不知道如何使用它,或者它是否适用于我的情况。
我会在 sprite 中存储原始位置的副本,然后按照@furas 的建议通过 reset()
函数重新定位和重新统计 sprite。
例如:
class ResettableSprite( pygame.sprite.Sprite ):
MAX_HEALTH = 100
def __init__( self, image, x, y ):
pygame.sprite.Sprite.__init__( self )
self.image = image
self.rect = self.image.get_rect()
self.start_x = x
self.start_y = y
self.reset()
def reset( self ):
self.rect.x = self.start_x
self.rect.y = self.start_y
self.health = ResettableSprite.MAX_HEALTH
# ... etc.