Tiled制作动图快速入门_for_arcade

地图由图块组成,新建地图方法之一就是在地图上铺PNG图片,这些图片也就是图块。

它们的大小或许是32X32像素,或许是64X64像素。

所以在新建地图之前,要准备好这些PNG图片。

在名为“1、新建图块集合.gif”演示中,新建了一个图块集。

其实它们记录的是一个个PNG文件的路径,以XML文件的形式。

tiled软件把图块文件设定的扩展名是tsx。可以用记事本打开“first.tsx“文件查看。

<?xml version="1.0" encoding="UTF-8"?>
<tileset version="1.2" tiledversion="1.2.2" name="first" tilewidth="64" tileheight="64" tilecount="4" columns="0">
 <grid orientation="orthogonal" width="1" height="1"/>
 <tile id="0">
  <image width="64" height="64" source="PNG/platformPack_item007.png"/>
 </tile>
 <tile id="1">
  <image width="64" height="64" source="PNG/platformPack_item015.png"/>
 </tile>
 <tile id="2">
  <image width="64" height="64" source="PNG/platformPack_item017.png"/>
 </tile>
 <tile id="3">
  <image width="64" height="64" source="PNG/platformPack_tile004.png"/>
 </tile>
</tileset>

 

以下是动画演示:

tiled新建图块集合

图块集合准备好了,就能新建地图了。
地图是分图层的,默认只有一个层。比如最低层可以通过双击的形式重命名为ground,代表地面。
可以新建一个picked层,用来放道具。当选中了哪个图层时,就是对哪个图层进行操作。
设计好了后就保存为tmx文件。

图块集合准备好了,就能新建地图了。 选择文件/创建新地图,设定宽度,高度等参数即可。
地图是分图层的,默认只有一个层。比如最低层可以通过双击的形式重命名为ground,代表地面。
这时我们可以选择右下角的图块,把它们铺上去。

如果要放一些诸如钻石,钥匙之类的,那应该新建一个层,用来放道具,图中名叫picked。

当选中了哪个图层时,就是对哪个图层进行操作。设计好了后就保存为tmx文件。

tmx文件也是一个xml文件,它记录的是地图的映射数据表。下面的tmx文件使用的是first.tsx图块文件。
在id为1的layer这个层下,data标签下面的数据为0的代表这里没有图块,为4的代表这里有一个图块,它是first.tsx中的第4个图块。
在id为2的layer这个层下也是一样,0代表没有图,有数字则代表有相应的图块。

<?xml version="1.0" encoding="UTF-8"?>
<map version="1.2" tiledversion="1.2.2" orientation="orthogonal" renderorder="right-down" width="12" height="8" tilewidth="64" tileheight="64" infinite="0" nextlayerid="3" nextobjectid="1">
 <tileset firstgid="1" source="first.tsx"/>
 <layer id="1" name="ground" width="12" height="8">
  <data encoding="csv">
0,0,0,0,0,0,0,0,4,4,4,4,
0,0,0,0,0,0,0,0,0,0,0,4,
0,0,0,0,0,0,0,0,4,4,4,4,
0,0,0,0,0,0,0,0,0,0,0,4,
0,0,0,4,4,4,4,0,0,0,0,4,
0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,4
</data>
 </layer>
 <layer id="2" name="picked" width="12" height="8">
  <data encoding="csv">
0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,3,3,3,3,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,1,1,1,1,1,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0
</data>
 </layer>
</map>

tiled新建地图演示

Arcade模块通过以下代码读取地图:

my_map = arcade.read_tiled_map(f"house_1.tmx", SPRITE_SCALING)

# 读取不可移动的平台数据阵列'ground'是一图层的名称
map_array = my_map.layers_int_data['ground']        
  
# 从墙生成地图列表
self.wall_list = arcade.generate_sprites(my_map, 'ground', SPRITE_SCALING)

上面的代码读到的地图用my_map引用。然后通过图层的名称定位到要使用哪一层地图数据。

最后把这一层地图所有的图块生成角色对象,并把它们都放到wall_list列表中。