Saltar
Parte de la sección Reglas del juego del Journey de Pygame de Coddy. Lección 24 de 29.
Un salto es una velocidad hacia arriba que la gravedad va eliminando. Dale al corredor una velocidad vertical, vy. En cada fotograma, la gravedad le suma 1 y el corredor se mueve esa distancia:
def update(self):
self.vy += GRAVITY
self.rect.y += self.vy
if self.rect.bottom >= GROUND_Y:
self.rect.bottom = GROUND_Y
self.vy = 0y crece hacia abajo, así que para saltar se establece vy = -16: el corredor sube 15 píxeles, después 14 y después 13, se ralentiza hasta detenerse a unos 120 píxeles de altura y vuelve a caer cada vez más rápido. Cuando llega a la línea del suelo, se coloca sobre ella y se detiene.
Salta solo desde el suelo. Sin esa comprobación, cada pulsación en el aire iniciaría un nuevo salto y el corredor podría subir para siempre:
def jump(self):
if self.rect.bottom == GROUND_Y:
self.vy = -16La sección 5 amplía esto con plataformas sobre las que aterrizar.
Desafío
Intermedio- Añade
GRAVITY = 1yself.vy = 0al corredor. - Escribe
update()como se muestra y llama arunner.update()en cada fotograma, antes de dibujar. - Escribe
jump():vy = -16, solo cuando el corredor esté en el suelo. - La tecla Espacio o la flecha Arriba llama a
runner.jump().
Pruébalo tú mismo
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 320))
pygame.display.set_caption("Sky Runner")
clock = pygame.time.Clock()
SKY = (140, 200, 240)
GROUND = (90, 160, 80)
GROUND_Y = 260
class Runner(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.image.load("assets/images/player.png").convert_alpha()
self.rect = self.image.get_rect(midbottom=(100, GROUND_Y))
runner = Runner()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill(SKY)
pygame.draw.rect(screen, GROUND, (0, GROUND_Y, 640, 60))
screen.blit(runner.image, runner.rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Reglas del juego
Practica por tu cuenta: Playground de Pygame