来自少数图像的动画精灵 [英] Animated sprite from few images
问题描述
我一直在寻找一些关于使用 Pygame 从 Python 中的少量图像制作简单精灵动画的好教程.我还没有找到我要找的东西.
I've been searching for some good tutorial about making simple sprite animation from few images in Python using Pygame. I still haven't found what I'm looking for.
我的问题很简单:如何用几张图片制作动画精灵(例如:制作几张尺寸为 20x20px 的爆炸图片作为一个但动画)
My question is simple: how to make an animated sprite from few images (for an example: making few images of explosion with dimensions 20x20px to be as one but animated)
有什么好主意吗?
推荐答案
您可以尝试修改您的精灵,使其在 update
中将其图像替换为不同的图像.这样,当精灵被渲染时,它就会看起来很动画.
You could try modifying your sprite so that it swaps out its image for a different one inside update
. That way, when the sprite is rendered, it'll look animated.
编辑:
这是我草拟的一个简单示例:
Here's a quick example I drew up:
import pygame
import sys
def load_image(name):
image = pygame.image.load(name)
return image
class TestSprite(pygame.sprite.Sprite):
def __init__(self):
super(TestSprite, self).__init__()
self.images = []
self.images.append(load_image('image1.png'))
self.images.append(load_image('image2.png'))
# assuming both images are 64x64 pixels
self.index = 0
self.image = self.images[self.index]
self.rect = pygame.Rect(5, 5, 64, 64)
def update(self):
'''This method iterates through the elements inside self.images and
displays the next one each tick. For a slower animation, you may want to
consider using a timer of some sort so it updates slower.'''
self.index += 1
if self.index >= len(self.images):
self.index = 0
self.image = self.images[self.index]
def main():
pygame.init()
screen = pygame.display.set_mode((250, 250))
my_sprite = TestSprite()
my_group = pygame.sprite.Group(my_sprite)
while True:
event = pygame.event.poll()
if event.type == pygame.QUIT:
pygame.quit()
sys.exit(0)
# Calling the 'my_group.update' function calls the 'update' function of all
# its member sprites. Calling the 'my_group.draw' function uses the 'image'
# and 'rect' attributes of its member sprites to draw the sprite.
my_group.update()
my_group.draw(screen)
pygame.display.flip()
if __name__ == '__main__':
main()
假设您在代码所在的同一文件夹中有两个名为 image1.png
和 image2.png
的图像.
It assumes that you have two images called image1.png
and image2.png
inside the same folder the code is in.
这篇关于来自少数图像的动画精灵的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!