首页 > 解决方案 > 为播放器制作动画

问题描述

所以我正在制作一个游戏,但使用 1-9 号图像作为动画,我需要动画方面的帮助,它说我不知道​​“IndexError:列表索引超出范围”

代码:

class Player(pygame.sprite.Sprite):
    player_folder = os.path.join(os.getcwd(), "Images/Animation_survivor/Move")
    player_animation = {}
    player_animation["nor"] = []

    @staticmethod
    def init():
        for i in range(9):
            filename = "survivor-move_rifle_{}.png".format(i)
            img = pygame.image.load(os.path.join(Player.player_folder, filename))
            org = pygame.transform.scale(img, (37, 37))

            Player.player_animation["nor"].append(org)
    def __init__(self, size):
        pygame.sprite.Sprite.__init__(self)
        self.image = Player.player_animation[size][0]
        self.rect = self.image.get_rect()
        self.frame = 0
        self.last_update = pygame.time.get_ticks()
        self.frame_rate = 40
        self.image = pygame.transform.scale(self.image, (80, 68))
        self.image = pygame.transform.rotate(self.image, 90)
        self.rect.bottom = Game.HEIGHT - 10
        self.rect.centerx = Game.WIDTH / 2
        self.shoot_delay = 150
        self.last_shoot = pygame.time.get_ticks()
        self.size = size

标签: pygame

解决方案


索引错误通常表明您尝试访问索引高于其中元素数量的集合(如数组/列表)。例如:

array = ['a', 'b', 'c']

会得到一个索引错误

array[3]

因为它只有 3 个元素(索引为 0、1、2)

例如, Player.player_animation[size][0] 是否在任何地方初始化?因为如果它为空,则没有索引 0(这将是第一个元素)。

确保正确初始化列表并且其中包含元素,例如:

if not Player.player_animation[size]:
  self.image = **dummyImage**

推荐阅读