В качестве небольшого проекта, над которым я хочу продолжить работу, я решил создать простой платформер, следуя руководству отсюда: https://arcade.academy/examples/platform_tutorial/index.html#
Все работает до такой степени, что у меня есть чтобы добавить код для рисования карты (https://arcade.academy/examples/platform_tutorial/index.html#draw -a-level )
Мой код в точке, где мне нужно обрабатывать слои, похож и / или почти идентичен.
Часть кода для обращения:
class Platformer(arcade.Window):
# Class initializer
def __init__(self):
# Call the parent class and setup the window
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE)
# We use lists to keep track of our sprites. Every sprite should have its own list
self.coin_list = None
self.wall_list = None
self.player_list = None
# Variable used for holding player sprite
self.player_sprite = None
# Main game setup (when called the game resets)
def setup(self):
# Create the sprite lists
self.player_list = arcade.SpriteList()
self.wall_list = arcade.SpriteList(use_spatial_hash = True)
self.coin_list = arcade.SpriteList(use_spatial_hash = True)
# Specify the player image source
player_image_source = "images/Player/player.png"
self.player_sprite = arcade.Sprite(player_image_source, SPRITE_SCALING)
# Set the X and Y coordinates to where the player will spawn
self.player_sprite.center_x = 64
self.player_sprite.center_y = 192
# Append the player sprite to the player list
self.player_list.append(self.player_sprite)
# ------------------Load a map from map.tmx------------------ #
# Name of map file to load
map_name = "Maps/map.tmx"
# Get layer names
platforms_layer_name = "Platforms"
coins_layer_name = "Coins"
# Read the map
my_map = arcade.tilemap.read_tmx(map_name)
# Platforms
self.wall_list = arcade.tilemap.process_layer(map_object = my_map,
layer_name = platforms_layer_name,
scaling = SPRITE_SCALING)
# Coins
self.coin_list = arcade.tilemap.process_layer(map_object = my_map,
layer_name = coins_layer_name,
scaling = SPRITE_SCALING)
# Set background color
if my_map.background_color:
arcade.set_background_color(my_map.background_color)
# Create physics engine
self.physics_engine = arcade.PhysicsEnginePlatformer(self.player_sprite,
self.wall_list,
GRAVITY)
# ----------------------------------------------------------- #
Вот код, в котором выдается ошибка:
# Here is the part of the code where ERROR IS THROWN
self.wall_list = arcade.tilemap.process_layer(map_object = my_map,
layer_name = platforms_layer_name
scaling = SPRITE_SCALING)
self.coin_list = arcade.tilemap.process_layer(map_object = my_map, # it stops right here
layer_name = coins_layer_name
scaling = SPRITE_SCALING)
А вот их код:
# -- Platforms
self.wall_list = arcade.tilemap.process_layer(map_object=my_map,
layer_name=platforms_layer_name,
scaling=TILE_SCALING,
use_spatial_hash=True)
# -- Coins
self.coin_list = arcade.tilemap.process_layer(my_map, coins_layer_name, TILE_SCALING)
TRACEBACK:
Traceback (most recent call last):
File "C:/Users/canus/Documents/GitHub/Platformer/Platformer/2D Platformer.py", line 221, in <module>
main()
File "C:/Users/canus/Documents/GitHub/Platformer/Platformer/2D Platformer.py", line 215, in main
window.setup()
File "C:/Users/canus/Documents/GitHub/Platformer/Platformer/2D Platformer.py", line 101, in setup
scaling = SPRITE_SCALING)
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\arcade\tilemap.py", line 457, in process_layer
return _process_tile_layer(map_object, layer, scaling, base_directory)
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\arcade\tilemap.py", line 404, in _process_tile_layer
for column_index, item in enumerate(row):
TypeError: 'Chunk' object is not iterable
Почему это происходит? Любая обратная связь приветствуется !!