Agregar desplazamiento a un juego de plataformas en pygame
en juegos de juego de plataformas, los jugadores navegan a través de los niveles mientras su posición en la pantalla permanece centrada. Este efecto se logra mediante el desplazamiento, que permite que el mundo del juego se mueva independientemente de la posición del reproductor.
implementando desplazamiento:
para implementar desplazamiento en pygame, use una clase cámara que define el mundo del juego entre el mundo y la posición del jugador. Este desplazamiento se aplica a la posición de todas las entidades de juego cuando se dibujan en la pantalla.
creando la clase de cámara:
class Camera: def __init__(self, camera_func, width, height): self.camera_func = camera_func self.state = Rect(0, 0, width, height) def apply(self, target): return target.rect.move(self.state.topleft) def update(self, target): self.state = self.camera_func(self.state, target.rect)
Funciones de la cámara:
[&]Hay varias formas de implementar la cámara_func:
centrando el reproductor: [&] def sencillo l, t, _, _ = target_rect # l = izquierda, t = top _, _, w, h = cámara # w = ancho, h = altura return rect (-l half_width, -t half_height, w, h)
def simple_camera(camera, target_rect): l, t, _, _ = target_rect # l = left, t = top _, _, w, h = camera # w = width, h = height return Rect(-l HALF_WIDTH, -t HALF_HEIGHT, w, h)
def comple_camera (cámara, target_rect):: x = -target_rect.center [0] win_width/2 y = -target_rect.center [1] win_height/2 Camera.topleft = (pygame.vector2 ((x, y)) - pygame.vector2 (cámaras.topleft)) * 0.06 # Agregue algo de suavidad Coolnes Camera.x = max (-(cámara.width-win_width), min (0, cámara.x)) Camera.y = max (-(Camera.Height-Win_Height), Min (0, Camera.y))) devuelve cámara
def simple_camera(camera, target_rect): l, t, _, _ = target_rect # l = left, t = top _, _, w, h = camera # w = width, h = height return Rect(-l HALF_WIDTH, -t HALF_HEIGHT, w, h)
para aplicar desplazamiento, instanciar la clase de cámara y llamar a sus métodos de actualización y aplicar dentro del bucle principal: ]# Cree la cámara de la cámara Camera = Camera (Complex_Camera, Total_Level_Width, Total_Level_Height) # Actualizar la cámara Camera.update (reproductor) # Aplicar desplazamiento a todas las entidades Para E en entidades: screen.blit (e.Image, Camera.apply (e))
consideraciones adicionales:
def simple_camera(camera, target_rect): l, t, _, _ = target_rect # l = left, t = top _, _, w, h = camera # w = width, h = height return Rect(-l HALF_WIDTH, -t HALF_HEIGHT, w, h)
use un capas en capas
subcLass para manejar los grupos de Sprite Sprite. necesidades.Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3