pygame - 为播放器制作动画
问题描述
所以我正在制作一个游戏,但使用 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
解决方案
索引错误通常表明您尝试访问索引高于其中元素数量的集合(如数组/列表)。例如:
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**
推荐阅读
- linux - 这两个 vscode 快捷方式的 VIM 等效项是什么?
- python-3.x - 静态变量 Python 的应用
- python - Keras DataGenerator:如何从每个子目录仅加载特定数量的图像?
- c - 处理多个客户端的文件描述符 C
- javascript - 当我使用 console.log 矩阵时,为什么会有这三个 [0][0][0][0][0][0] ?
- egl - 从 qt 上的渲染缓冲区创建 EGLImageKHR 图像
- bootstrap-4 - 我正在尝试在 Bootstrap 4 轮播中获得两列或网格
- python - 如何为分散在磁盘和每个文件中的数据正确定义 Pytorch 数据集和数据加载器?
- opencv - 获取 TypeError:找不到所需的参数“rec”(位置 2)
- datetime - FAGL_ACCOUNT_ITEMS_GL_API 在 I_POSTING_DATES 范围内不返回任何数据