Moving the Camera
Now we are going to create a new camera_move() function to move our camera with our player. Then we will call this function in our on_update() function.
camera_move(): Inside this function, we will calculate the x and y coordinates of the center of the camera according to our player’s position. Then we will move our camera with the help of the move_to() function.
Below is the implementation:
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 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( 200 , 200 ) # 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 platform sprite platform = arcade.Sprite( "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() # 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 # 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() |
Output:
Python Arcade – Adding Camera
In this article, we will learn How we can add cameras to arcade games in Python.