import pygame, PygAnimation
screen = pygame.display.set_mode((500,500))
class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = PygAnimation([("png/Attack__000.png",.08), ("png/Attack__001.png",.08),("png/Attack__002.png",.08),
("png/Attack__003.png",.08),("png/Attack__004.png",.08),("png/Attack__005.png",.08),],True)
def update(self):
self.image.play()
self.mask = pygame.mask.from_surface(self.image)
def draw(self):
self.image.blit(screen,(100,100))
p = Player()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((255,255,255))
p.draw()
p.update()
pygame.display.update()
我在尝试获取掩码时一直遇到错误,它说参数1必须是pygame.surface而不是pyganimation。 我已经尝试了许多方法来获得面具,但所有的努力都被证明是徒劳的
答案 0 :(得分:0)
由于追溯表示您必须将pygame.Surface
传递给pygame.mask.from_surface
,但self.image
是PygAnimation
对象而非表面。您可以通过调用pygame.Surface
来获取动画的当前帧(self.image.getCurrentFrame()
)。
self.mask = pygame.mask.from_surface(self.image.getCurrentFrame())
此外,持续时间以毫秒为单位,因此将.08
更改为更高的50
。