En este artículo, discutiremos cómo agregar plataformas móviles a nuestros juegos de arcade en Python.
Agregar plataforma móvil
Podemos agregar fácilmente plataformas móviles en nuestro juego de arcade siguiendo los pasos a continuación:
- Crea 2 nuevas variables para el sprite y la velocidad de la plataforma en movimiento.
self.moving_vel = 3 self.moving_platform = None
- Carga el sprite y agrega las coordenadas iniciales.
self.moving_platform = arcade.Sprite("Moving.png",1) self.moving_platform.center_x = 500 self.moving_platform.center_y = 500
- Actualice la coordenada y de la plataforma.
self.moving_platform.center_y -= self.moving_vel
- Cambie la dirección de la plataforma si la plataforma cruza el límite.
if self.moving_platform.center_y < 100 or self.moving_platform.center_y>600: self.moving_vel *= -1
Sprites usados:
Para ello, vamos a crear una clase MainGame(). Dentro de esta clase primero, vamos a inicializar algunas variables para la velocidad del jugador, la velocidad de la plataforma, la cámara, el sprite del jugador, el motor de física y nuestra escena. Después de eso, crearemos 6 funciones dentro de esta clase.
- on_draw(): Dentro de esta función, usaremos nuestra cámara y luego dibujaremos nuestra escena.
- setup(): en esta función, inicializaremos nuestra cámara y el objeto de escena, luego cargaremos los sprites de nuestro reproductor y plataforma. Después de eso, llamaremos a la función PhysicsEnginePlatformer().
- on_update(): En esta función, actualizaremos la coordenada x del sprite del jugador agregando el valor de la variable de velocidad y también actualizaremos la coordenada y de nuestra plataforma móvil. Después de eso, llamaremos a nuestra función camera_move().
- on_key_press(): En esta función cambiaremos el valor de la variable vel_x según la tecla del teclado que se presione.
- on_key_release(): En esta función cambiaremos el valor de la variable vel_x según la tecla del teclado que se suelte.
- camera_move(): En esta función, cambiaremos la posición de la cámara según la posición actual del jugador.
A continuación se muestra la implementación:
Python3
# Importing arcade module import arcade # Creating MainGame class class MainGame(arcade.Window): def __init__(self): super().__init__(600, 600, title="Player Movement") # Initializing a variable to store # the velocity of the player self.vel_x = 0 # Creating variable for Camera self.camera = None # Creating variable for moving velocity self.moving_vel = 3 # Creating variable for Platform self.moving_platform = None # Creating scene object self.scene = None # Creating variable to store player sprite self.player = None # Creating variable for our game engine self.physics_engine = None # Creating on_draw() function to draw on the screen def on_draw(self): arcade.start_render() # Using the camera self.camera.use() # Drawing our scene self.scene.draw() def setup(self): # Initialize Scene object self.scene = arcade.Scene() # Using Camera() function self.camera= arcade.Camera(600,600) # Creating different sprite lists self.scene.add_sprite_list("Player") self.scene.add_sprite_list("Platforms", use_spatial_hash=True) # Adding player sprite self.player_sprite = arcade.Sprite("Player.png", 1) # Adding coordinates for the center of the sprite self.player_sprite.center_x = 64 self.player_sprite.center_y = 600 #Adding Sprite in our scene self.scene.add_sprite("Player", self.player_sprite) #Adding moving Platform sprite self.moving_platform = arcade.Sprite("Moving.png",1) # Adding starting coordinates self.moving_platform.center_x = 500 self.moving_platform.center_y = 500 # Adding to Platforms sprite group self.scene.add_sprite("Platforms", self.moving_platform) # Adding platform sprite according to level platform = arcade.Sprite(f"Platform.png", 1) # Adding coordinates for the center of the platform platform.center_x = 300 platform.center_y = 32 self.scene.add_sprite("Platforms", platform) # Creating Physics engine self.physics_engine = arcade.PhysicsEnginePlatformer( self.player_sprite, self.scene.get_sprite_list("Platforms"), 0.5 ) # Creating on_update function to # update the x coordinate def on_update(self,delta_time): # Changing x coordinate of player self.player_sprite.center_x += self.vel_x * delta_time # Updating the physics engine to move the player self.physics_engine.update() # Adding moving velocity in moving platform self.moving_platform.center_y -= self.moving_vel # Changing the direction if self.moving_platform.center_y < 100 or self.moving_platform.center_y>600: self.moving_vel *= -1 # Calling the camera_move function self.camera_move() # Creating function to change the velocity # when button is pressed def on_key_press(self, symbol,modifier): # Checking the button pressed # and changing the value of velocity if symbol == arcade.key.LEFT: self.vel_x = -300 elif symbol == arcade.key.RIGHT: self.vel_x = 300 elif symbol == arcade.key.UP: if self.physics_engine.can_jump(): self.player_sprite.change_y = 15 # Creating function to change the velocity # when button is released def on_key_release(self, symbol, modifier): # Checking the button released # and changing the value of velocity if symbol == arcade.key.LEFT: self.vel_x = 0 elif symbol == arcade.key.RIGHT: self.vel_x = 0 def camera_move(self): # Getting the x coordinate for the center of camera screen_x = self.player_sprite.center_x - (self.camera.viewport_width / 2) # Getting the y coordinate for the center of camera screen_y = self.player_sprite.center_y - (self.camera.viewport_height / 2) # Moving the camera self.camera.move_to([screen_x, screen_y]) # Calling MainGame class game = MainGame() game.setup() arcade.run()
Producción:
Publicación traducida automáticamente
Artículo escrito por imranalam21510 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA