Oct-28-2019, 11:17 PM
Hello all,
Ok, I found Python Arcade and wanted to play and see what I could come up with. I have been following some tutorials and videos but most of the ones I found are using the platform physics engine, I want to use the simple and do an overhead with character animation moving in 4 directions.
I got as far as below, but for some reason, if i move left or right until i hit a wall, then try to go up or down it shoots the player off the screen and gives me :
I found another thread that was similar but his issue was fixed by not calling the player.update() method, which I also took out, but it still happens.
the weird thing is it only happens when i go left or right then up or down. If i go up or down to the wall, then left or right it works fine.
Thanks..
Ok, I found Python Arcade and wanted to play and see what I could come up with. I have been following some tutorials and videos but most of the ones I found are using the platform physics engine, I want to use the simple and do an overhead with character animation moving in 4 directions.
I got as far as below, but for some reason, if i move left or right until i hit a wall, then try to go up or down it shoots the player off the screen and gives me :
Quote:Error, collision while player wasn't moving.
I found another thread that was similar but his issue was fixed by not calling the player.update() method, which I also took out, but it still happens.
the weird thing is it only happens when i go left or right then up or down. If i go up or down to the wall, then left or right it works fine.
import arcade SCREEN_WIDTH = 1000 SCREEN_HEIGHT = 700 class MyGame(arcade.Window): """ Main application class. """ def __init__(self, width, height): super().__init__(width, height) self.player_list = None self.player = None self.dt = None self.player_list = arcade.SpriteList() self.player = arcade.AnimatedWalkingSprite() self.player_speed = 150 self.player.set_position(300, 300) self.right = False self.left = False self.up = False self.down = False self.ground_list = None self.wall_list = None self.physics_engine = None arcade.set_background_color(arcade.color.BLACK) def setup(self): my_map = arcade.read_tiled_map("Maps/MyMap2.tmx") self.ground_list = arcade.generate_sprites(my_map, "Ground", 1) self.wall_list = arcade.generate_sprites(my_map, "Walls", 1) self.player.stand_right_textures = [] self.player.stand_right_textures.append(arcade.load_texture("Player/R_1.png")) self.player.stand_left_textures = [] self.player.stand_left_textures.append(arcade.load_texture("Player/L_1.png")) self.player.stand_up_textures = [] self.player.stand_up_textures.append(arcade.load_texture("Player/U_1.png")) self.player.stand_down_textures = [] self.player.stand_down_textures.append(arcade.load_texture("Player/D_1.png")) self.player.walk_right_textures = [] self.player.walk_right_textures.append(arcade.load_texture("Player/R_1.png")) self.player.walk_right_textures.append(arcade.load_texture("Player/R_2.png")) self.player.walk_right_textures.append(arcade.load_texture("Player/R_3.png")) self.player.walk_right_textures.append(arcade.load_texture("Player/R_4.png")) self.player.walk_left_textures = [] self.player.walk_left_textures.append(arcade.load_texture("Player/L_1.png")) self.player.walk_left_textures.append(arcade.load_texture("Player/L_2.png")) self.player.walk_left_textures.append(arcade.load_texture("Player/L_3.png")) self.player.walk_left_textures.append(arcade.load_texture("Player/L_4.png")) self.player.walk_up_textures = [] self.player.walk_up_textures.append(arcade.load_texture("Player/U_1.png")) self.player.walk_up_textures.append(arcade.load_texture("Player/U_2.png")) self.player.walk_up_textures.append(arcade.load_texture("Player/U_3.png")) self.player.walk_up_textures.append(arcade.load_texture("Player/U_4.png")) self.player.walk_down_textures = [] self.player.walk_down_textures.append(arcade.load_texture("Player/D_1.png")) self.player.walk_down_textures.append(arcade.load_texture("Player/D_2.png")) self.player.walk_down_textures.append(arcade.load_texture("Player/D_3.png")) self.player.walk_down_textures.append(arcade.load_texture("Player/D_4.png")) self.player_list.append(self.player) self.physics_engine = arcade.PhysicsEngineSimple(self.player, self.wall_list) def on_draw(self): """ Render the screen. """ arcade.start_render() self.ground_list.draw() self.wall_list.draw() self.player_list.draw() def update(self, delta_time): """ All the logic to move, and the game logic goes here. """ self.dt = delta_time self.physics_engine.update() self.player_list.update_animation() def on_key_press(self, symbol, modifiers): if symbol == arcade.key.RIGHT: self.player.change_x = self.player_speed * self.dt if symbol == arcade.key.LEFT: self.player.change_x = -self.player_speed * self.dt if symbol == arcade.key.UP: self.player.change_y = self.player_speed * self.dt if symbol == arcade.key.DOWN: self.player.change_y = -self.player_speed * self.dt def on_key_release(self, symbol, modifiers): if symbol == arcade.key.RIGHT or arcade.key.LEFT: self.player.change_x = 0 if symbol == arcade.key.UP or arcade.key.DOWN: self.player.change_y = 0 def main(): game = MyGame(SCREEN_WIDTH, SCREEN_HEIGHT) game.setup() arcade.run() if __name__ == "__main__": main()I appreciate any help and if you know of any overhead tutorials out there, i am pretty desperate to watch someone do it to learn from.
Thanks..