瓦片地图编辑器
瓦片地图就是一个关卡:用你的某张图像的图块绘制的格子网格,带有代码读取的标签,以及放在上面的物件,例如主角的起点、金币、宝箱。它在 iPad 和 Mac 的瓦片地图编辑器中打开。
打开瓦片地图编辑器
在文件中选择一个 .tilemap,它会直接在瓦片地图编辑器中打开。要新建一个,选择 文件 › 新素材…,然后选 瓦片地图(参见 项目与素材)。
栏中显示地图的名称、大小、图块大小和缩放。图块 | 物件 选择你编辑的图层(L)。网格 显示格子的线,地图设置 用来链接图块集、调整地图大小和设置格子大小。
绘制图块
在 图块 图层上,侧栏显示图块集:点按一个图块来选取它,或拖过多个图块选取图章。工具沿画布边缘排列,各有快捷键:
- 铅笔(B)— 绘制选中的图块或图章
- 橡皮擦(E)— 清空格子
- 填充(G)— 填充同一图块的相连格子
- 矩形(U)— 填充一个矩形
- 取色器(I)— 下方的图块成为要绘制的图块
- 选择(M)— 选择格子,然后移动、剪切、复制或粘贴
绘制标签(T)绘制图块集下方选中的标签而不是图块,显示标签 在地图上显示标签。代码用 map.hit(…) 读取格子的标签:例如墙用标签 2(参见 碰撞)。
物件图层
物件 是放在格子上的名称:主角的起点、一排金币、一个宝箱。在栏中选择 物件(L)即可放置。侧栏变成物件面板:项目中的每个精灵都用第一帧绘制,并以它命名。物件的名称就是它的精灵的名称,代码读取的也是这个名称。
- 放置(B)— 把面板中选中的精灵放进格子。拖动时,经过的每个格子都放一个。每格一个物件:在已有物件的格子上放置会替换它。
- 移除(E)— 移除下方的物件;拖动时移除经过的每一个。
- 拾取(I)— 该物件的名称成为要放置的名称。
- 选择(M)— 点按物件来选择,⇧-点按添加一个,或从空格子拖出矩形来选择其中的物件。拖动选中的物件即可移动,多个物件保持间距。方向键把选区移动一格。
物件不会落在另一个物件上:移到已有物件的格子会被拒绝,物件回到原处,编辑器会说明那个格子里有什么。按住 ⌥ 则交换两者。删除、剪切、复制 和 粘贴 都作用于物件(粘贴的一组会跟随指针,直到你点按)。显示名称(N)显示所有名称;否则在选择或指向物件时显示它的名称。在物件图层上,填充、矩形 和 绘制标签 呈灰色。
在图块图层上,物件以 40 % 留在地图上,点按会绘制物件下方的图块,而不会碰到物件。
此地图上 统计每个名称的物件数量;点按一个名称即可全部选中。在地图上右键点按会打开图层的菜单。
种类
面板中的 新建种类… 给精灵的某一帧取一个自己的名字:例如用史莱姆精灵第二帧绘制的 guard,放在 slime 旁边。种类随地图保存,并在面板中列在精灵之后。
在“文件”中重命名精灵时,如果项目的地图上有用它绘制的物件,会询问 同时重命名它的 3 个物件?:重命名物件 会在每张地图上重命名它们,连同用它绘制的种类,一次撤销即可一起恢复新名称和物件;保留原名 则不作改动。精灵被删除,或重命名时未带上物件,它的物件保留名称,以虚线绘制,直到再有同名的精灵或种类。
在 iPad 上
轻点会在手指抬起的位置放置物件。用 选择 拖动物件即可移动;无论用哪个工具,长按都会拿起物件以便移动,不移动就松开则会显示它的菜单。在物件图层上,地图上方的编辑胶囊有 删除。双指用于平移和缩放,从不放置任何东西。
在代码中
map.things() 以 (name, row, column) 列出物件:
level = world.spawn(map=GridMap(tilemap="level"))
for name, row, column in level.map.things():
if name == "coin":
place_coin(row, column) # 你的游戏自己的函数
格式和地图的其他函数请参见 GridMap。
面板栏中的在代码中使用会列出脚本中用到这张地图的行;选择一行即可跳过去。在代码中 Cmd+点按地图名会回到这里。
撤销和重做
每次编辑都是 撤销(Cmd+Z)的一步:一笔图块、放置一排金币的一次拖动、多个物件的移动。