我有一個精靈,它使用下面的函式左右遍歷。當它向左翻轉時,它似乎將 img 翻轉了 1 幀,然后在向左移動時保持指向右側。同樣的 1 幀翻轉也發生在另一側。使用單個影像效果很好,但我已經添加了這個影片回圈,現在我被難住了。
class Enemy(pygame.sprite.Sprite):#==================================================
def __init__(self,x,y):
pygame.sprite.Sprite.__init__(self)
self.images_right = []
self.frame_index = 0
self.counter = 0
for num in range (1,8):
img_right = pygame.image.load(f'img/enemy/{num}.png')
self.images_right.append(img_right)
self.image = self.images_right[self.frame_index]
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
self.move_direction = 1
self.move_counter = 0
def update(self):
self.counter = 1
walk_cooldown = 2
if self.counter > walk_cooldown:
self.counter = 0
self.frame_index = 1
if self.frame_index >= len(self.images_right):
self.frame_index = 0
self.image = self.images_right[self.frame_index]
self.rect.x = self.move_direction
self.move_counter = 1
if abs(self.move_counter) > 32:
self.move_direction *= -1
self.image = pygame.transform.flip(self.image, True, False)
self.move_counter *= -1
uj5u.com熱心網友回復:
你有一個影像串列。您只是翻轉串列中的最后一個影像。
在建構式中,創建一個左右影像串列并選擇要顯示的影像update:

class Enemy(pygame.sprite.Sprite):
def __init__(self,x,y):
pygame.sprite.Sprite.__init__(self)
self.images_right = [pygame.image.load(f'img/enemy/{num}.png') for num in range (1,8)]
self.images_left = [pygame.transform.flip(img, True, False) for img in self.images_right]
self.frame_index = 0
self.image = self.images_right[self.frame_index]
self.rect = self.image.get_rect(topleft = (x, y))
self.counter = 0
self.move_direction = 1
self.move_counter = 0
def update(self):
self.counter = 1
walk_cooldown = 2
if self.counter > walk_cooldown:
self.counter = 0
self.frame_index = 1
if self.frame_index >= len(self.images_right):
self.frame_index = 0
self.rect.x = self.move_direction
self.move_counter = 1
if abs(self.move_counter) > 32:
self.move_direction *= -1
self.move_counter *= -1
image_list = self.images_right if self.move_direction > 0 else self.images_left
self.image = image_list[self.frame_index]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/390713.html
