Maison >développement back-end >Tutoriel Python >Comment créer un sprite animé dans Pygame à l'aide d'une série d'images ?

Comment créer un sprite animé dans Pygame à l'aide d'une série d'images ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-10 01:02:02229parcourir

How to Create an Animated Sprite in Pygame using a Series of Images?

Sprite animé à partir de quelques images

Dans cet article, nous verrons comment créer un sprite animé à l'aide d'une série d'images dans Python utilisant Pygame. Nous aborderons les techniques d'animation dépendantes de l'image et du temps.

Avant la boucle principale

Tout d'abord, nous chargeons toutes les images dans une liste. Ensuite, nous créons trois variables :

  1. index : Suit l'index actuel de la liste d'images.
  2. current_time : Suit l'index écoulé temps depuis le dernier changement d'image.
  3. animation_time : Définit combien de temps doit s'écouler avant de changer d'image.

Pendant la boucle principale

Dans la boucle principale du jeu, nous :

  1. Incrémentons current_time en fonction du temps écoulé depuis la dernière image.
  2. Vérifiez si current_time dépasse animation_time. Si c'est vrai, nous :

    • Réinitialiser current_time à 0.
    • Incrémenter index dans la liste d'images.
    • Modifiez l'image du sprite en conséquence.

Mise en œuvre

Voici un exemple complet :

import pygame

screen = pygame.display.set_mode((640, 480))
clock = pygame.time.Clock()

# Load images
images = [pygame.image.load("explosion" + str(i) + ".png") for i in range(10)]

# Create animated sprite
animation_time = 0.1
current_time = 0
index = 0

class Sprite(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = images[index]
        self.rect = self.image.get_rect()

    def update(self, dt):
        global current_time, index
        current_time += dt
        if current_time >= animation_time:
            current_time = 0
            index = (index + 1) % len(images)
            self.image = images[index]

sprite = Sprite()
group = pygame.sprite.Group(sprite)

running = True
while running:
    dt = clock.tick(60) / 1000

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    group.update(dt)

    screen.fill((0, 0, 0))
    group.draw(screen)
    pygame.display.update()

En comprenant En fonction des délais et des transitions impliqués, vous pouvez créer efficacement des sprites animés visuellement attrayants dans vos propres projets Pygame.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn