我正在用 pygame 制作一个小游戏,你可以上下移动一艘船来避开小行星,并且在每个关卡的末尾都有一个着陆动画。大多数时候动画实际上工作得很好,但有时 180 度旋转会出现问题。虽然船在最后旋转了它回到了它的原始位置(它做了 180 转,着陆,但随后图像又回到了它的原始位置,就像旋转从未发生过一样)。我该如何解决?提前致谢!
它应该如何结束:
有时结果如何:
着陆是船的精灵内部的一个函数,它也让它靠近行星以便它可以着陆:
def __init__(self):
pygame.sprite.Sprite.__init__(self)
#colocamos la imagen
self.player_img = pygame.image.load(path.join(img_dir, "playerShip1_red.png")).convert()
self.imageOriginal = pygame.transform.scale(self.player_img,(38, 50))
self.imageOriginal.set_colorkey(BLACK)
self.image = self.imageOriginal.copy()
#posicion inicial
self.rect = self.image.get_rect()
self.radius = 20
# pygame.draw.circle(self.image, RED, self.rect.center, self.radius)
self.rect.top = (HEIGHT // 2) - 20
self.rect.left = 50
#incio velocidad a 0
self.speedY = 0
self.teclasPulsadas = True
self.rotacion = 0
self.vRotacion = 6.2
self.last_update = pygame.time.get_ticks()
self.estado = self.Estado.volando
..............
def aterrizaje(self):
if self.rect.top > 175:
self.rect.y -=1
elif self.rect.top < 175:
self.rect.y +=1
elif self.rect.bottom > 225:
self.rect.y -=1
elif self.rect.bottom < 225:
self.rect.y += 1
else:
pass
if self.rect.left < 612:
self.rect.x += 5
#vuelta 180 grados
now = pygame.time.get_ticks()
if now - self.last_update > 50:
self.last_update = now
self.rotacion = (self.rotacion + self.vRotacion) % 180
newImage = pygame.transform.rotate(self.imageOriginal, self.rotacion)
old_center = self.rect.center
self.image = newImage
self.rect = self.image.get_rect()
self.rect.center = old_center
self.teclasPulsadas = False
else:
pass