Reaparecer al otro lado de la pantalla
Parte de la sección El bucle del juego del Journey de Pygame de Coddy. Lección 22 de 32.
En muchos juegos espaciales, una nave o una roca que sale por un lado de la pantalla reaparece por el otro. Esto es envolvimiento. La roca de aquí se desplaza hacia arriba y a la derecha, y después de unos segundos desaparece para siempre.
Comprueba cada borde después de moverla. El radio de la roca es 20, así que deja que salga completamente de la vista antes de que salte: al pasar de 480 + 20 por la derecha, reaparece en -20, fuera de la vista más allá del borde izquierdo, y entra deslizándose.
if pos.x > 500:
pos.x = -20
if pos.x < -20:
pos.x = 500Lo mismo ocurre con y y la altura: al pasar de 380 por abajo, reaparece en -20; y al pasar de -20 por arriba, reaparece en 380.
Solo salta la posición. La velocidad se mantiene, así que la roca sigue desplazándose en la misma dirección después de envolverse.
Desafío
FácilDespués de pos += vel * dt, haz que la roca reaparezca por el lado opuesto:
- Por encima de 500,
pos.xpasa a ser -20; por debajo de -20, pasa a ser 500. - Por encima de 380,
pos.ypasa a ser -20; por debajo de -20, pasa a ser 380.
Pruébalo tú mismo
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Drifting Rock")
clock = pygame.time.Clock()
pos = pygame.Vector2(240, 180)
vel = pygame.Vector2(120, -70)
dt = 0
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pos += vel * dt
screen.fill((20, 20, 34))
pygame.draw.circle(screen, (150, 150, 160), pos, 20)
pygame.display.flip()
dt = clock.tick(60) / 1000
pygame.quit()
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de El bucle del juego
1Mueve un cuadrado
Abre una ventanaRellena el fondo4Movimiento basado en el tiempo
Tiempo deltaPíxeles por segundoVector2Aceleración y fricciónReaparecer al otro lado de la pantallaPractica por tu cuenta: Playground de Pygame