En este artículo, aprenderemos cómo agregar escaleras en Arcade usando Python.
Agregar escalera
En este ejemplo, vamos a agregar una escalera en la pantalla que nuestro jugador puede subir. Para ello, utilizaremos algunas funciones:
draw_text(): esta función se usa para dibujar texto en la pantalla usando la etiqueta de Pyglet.
Sintaxis: arcade.draw_text(texto, x, y, color, tamaño, ancho, alineación, nombre_fuente)
Parámetros:
- text: Texto que queremos mostrar
- x : coordenada x
- y : coordenada y
- color : color del texto
- tamaño : Tamaño de la fuente
- ancho : Ancho del texto
- align : Alineación del texto
- font_name : Nombre de la fuente
PhysicsEnginePlatformer(): motor de física simplista para usar en un juego de plataformas.
Sintaxis: arcade.PhysicsEnginePlatformer(player_sprite, plataformas, gravedad, escaleras)
Parámetros:
- player_sprite: sprite del jugador
- plataformas: los sprites por los que no puede moverse
- gravedad: aceleración hacia abajo por cuadro
- ladders: Escaleras en las que el usuario puede subir
Sprites usados ():
En el siguiente ejemplo, vamos a crear una clase MainGame(). Dentro de esta clase primero, vamos a inicializar algunas variables para velocidad, escena, sprite de escalera y sprite del jugador, luego crearemos 4 funciones dentro de esta clase.
- on_draw(): Dentro de esta función, usaremos nuestra escena en la pantalla.
- setup(): en esta función, inicializaremos nuestro objeto de escena, luego cargaremos los sprites de nuestro reproductor y plataforma, luego cargaremos nuestro sprite de escalera e inicializaremos las coordenadas x e y iniciales. Después de eso, llamaremos a la función PhysicsEnginePlatformer(). Pasaremos nuestra escalera como un parámetro en nuestra función PhysicsEnginePlatformer().
- on_update(): En esta función, actualizaremos el motor de física y las coordenadas x del sprite del jugador.
- on_key_press() y on_key_release(): En esta función cambiaremos el valor de la variable velocidad según la tecla del teclado que se presione o se suelte.
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 ladder sprite self.ladder = 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() # Drawing our scene self.scene.draw() def setup(self): # Initialize Scene object self.scene = arcade.Scene() # Loading ladder sprite self.ladder = arcade.Sprite("Ladder.png", 1) # Initializing the starting coordinates self.ladder.center_x = 500 self.ladder.center_y = 110 # Adding the ladder sprite in the scene self.scene.add_sprite("Ladder", self.ladder) # 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 = 90 # Adding Sprite in our scene self.scene.add_sprite("Player", self.player_sprite) # 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, self.scene.get_sprite_list("Ladder") ) # 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() # 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.is_on_ladder(): self.player_sprite.change_y = 2 elif self.physics_engine.can_jump(): self.player_sprite.change_y = 15 elif symbol == arcade.key.DOWN: if self.physics_engine.is_on_ladder(): self.player_sprite.change_y = -2 # 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 elif symbol == arcade.key.UP or symbol == arcade.key.DOWN: if self.physics_engine.is_on_ladder(): self.player_sprite.change_y = 0 # 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