Adding Camera
You can create a camera in arcade using the Camera() function.
Syntax: arcade.Camera( width. height)
Parameters:
- width: Width of the camera
- height: Height of the camera
So to use this camera we are going to create a new variable.
self.camera = None
Then in our setup() function, we will create our camera using the Camera() function.
self.camera= arcade.Camera(200,200)
After that, we will use the camera.use function in our on_draw() function to use the camera.
self.camera.use()
In the below example, we are going to create MainGame() class. Inside our MainGame() class first we will initialize some variables for velocity, camera, scene, player’s sprite, and physics engine after that we will create 5 functions:
- on_draw(): Inside this function, we will start the rendering using arcade.start_render() then we will draw our scene.
- setup(): Inside this function, we will call the arcade.Scene() and arcade.Camera() functions and then we will load and store our sprites in a sprite list.
- on_update(): Here we will update the x coordinate of our player sprite and our physics engine.
- on_key_press(): Inside this function, we will check which keyboard button is pressed and we will change the value of the velocity variable according to that.
- on_key_release(): Inside this function, we will check which keyboard button is released and we will change the value of the velocity variable according to that.
Sprites Used:
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() 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() # 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 # Calling MainGame class game = MainGame() game.setup() arcade.run() |
Output:
But here you can see our camera is not moving with our player. So to move the Camera with our player we have to create a function.
Python Arcade – Adding Camera
In this article, we will learn How we can add cameras to arcade games in Python.