27/03/2010, 15:34
|
| | Fecha de Ingreso: mayo-2009
Mensajes: 50
Antigüedad: 15 años, 5 meses Puntos: 1 | |
[Pygame]Controles y Animaciones Hola a todos! He intentado solucionar pero no pude, busque en inet y tampoco encontre una solución. El problema es el siguiente:
Las siguientes funciones de la clase personaje mueven y realizan la animacion de movimiento del personaje:
Código:
def animar(self, n):
self.frame_num += 1
pygame.time.delay(35)
if self.frame_num == n:
self.frame_num = 0
def update(self):
teclas_pulsadas = pygame.key.get_pressed()
dx = 0
dy = 0
pygame.key.set_repeat()
if teclas_pulsadas[K_s]:
self.imagen = pygame.image.load('imagenes/s.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
self.transformar_en_s()
if teclas_pulsadas[K_n]:
self.imagen = pygame.image.load('imagenes/n.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
self.destransformar()
if teclas_pulsadas[K_z]:
if self.ss == 0:
self.imagen = pygame.image.load('imagenes/gn.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
elif self.ss == 1:
self.imagen = pygame.image.load('imagenes/gs.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
self.animar(4)
if teclas_pulsadas[K_UP]:
if self.ss == 0:
self.imagen = pygame.image.load('imagenes/n.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
elif self.ss == 1:
self.imagen = pygame.image.load('imagenes/s.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
self.direcion = ISO_ARR
dy = -5
self.animar(4)
elif teclas_pulsadas[K_DOWN]:
if self.ss == 0:
self.imagen = pygame.image.load('imagenes/n.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
elif self.ss == 1:
self.imagen = pygame.image.load('imagenes/s.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
self.direcion = ISO_ABA
dy = 5
self.animar(4)
elif teclas_pulsadas[K_LEFT]:
if self.ss == 0:
self.imagen = pygame.image.load('imagenes/n.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
elif self.ss == 1:
self.imagen = pygame.image.load('imagenes/s.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
self.direcion = ISO_IZQ
dx = -5
self.animar(4)
elif teclas_pulsadas[K_RIGHT]:
if self.ss == 0:
self.imagen = pygame.image.load('imagenes/n.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
elif self.ss == 1:
self.imagen = pygame.image.load('imagenes/s.png')
self.imagen.set_colorkey(self.imagen.get_at((0,0)) )
self.direcion = ISO_DER
dx = 5
self.animar(4)
funcionan bien, el problema es que el jugador tiene que mantener apretado la tecla para que la animacion se concrete, y ensima cuando suelta queda en cualuquier frame.
Lo que quiero lograr es que con solo apretar una ves la tecla se concrete la animacion entera(es decir muestre las 4 fotos) y vuela a la 1.
Saludos! |