我正在使用pygame继续我的工作,我正在研究玩家精灵,特别是当它受到伤害时。我想做的是当玩家受到敌人的伤害时,我希望玩家精灵眨眼2-3次,让玩家一两秒钟从受到伤害的地方移动。我有一个健康栏(3颗心),我设置它,以便每当敌人和玩家精灵之间发生碰撞时,它将移除1.我正在使用kill()函数(我知道这是错的,因为它完全删除精灵)。如何让精灵闪烁一两秒钟。任何帮助或建议将不胜感激。谢谢。
enemy_hit_list = pygame.sprite.spritecollide(self, self.level.enemy_list, False)
if enemy_hit_list:
self.health -= 1
self.kill()
答案 0 :(得分:1)
您必须通过添加额外属性来专门化您的课程,该属性将显示闪烁状态。 “杀戮”方法可以从任何群体中清除精灵 - 我不知道你上面的片段是什么,影响是什么。如果你正在使用一个小组来实际绘制玩家(自己),那么从那里移除它不是最好的事情。
例如,您可以在精灵上使用“hit_countdown”属性,并使用它的更新方法相应地更改它的图像,并测量它恢复正常的时间:
class Player(Sprite):
def __init__(self, ...):
...
self.hit_countdown = 0
...
def update(self, ...):
if self.hit_coundown:
if not hasattr(self, original_image):
self.original_image = self.image
if self.hit_countdown % 2:
self.image = None # (or other suitable pre-loaded image)
else:
self.image = self.original_image
self.hit_countdown = max(0, self.hit_countdown - 1)
super(Player, self).update(...)
# and on your hit code above:
...
if enemy_hit_list:
self.health -= 1
self.hit_countdown = 6
答案 1 :(得分:0)
def __init__(self):
super(classname,self).__init__()
self.image,self.rect = load_image("character.png")
self.value = 0
self.newColor = [0,0,0,0]
def update(self):
self.cp = self.image.copy()
self.value += 50
self.newColor[0] = self.value%255
self.cp.fill(self.newColor[0:3] + [0,], None, pygame.BLEND_RGBA_ADD)
def render(self,screen):
screen.blit(self.cp,self.rect)
我使用时钟刻度40并且运行良好。更新方法是为效果不断增加红色值。您可以在RGB_ADD命令之前使用其他颜色或填充此颜色以填充纯色。
self.cp.fill((0, 0, 0, 255), None, pygame.BLEND_RGBA_MULT)
我希望它对你有用