文档
官网 打开编辑器
文档/扩展

地图

地图是用小图块一格一格铺出来的画面:地面、墙、平台、迷宫。一张切成格子的图叫图块集, 图里的每一格叫一块瓦片,把瓦片摆进格子里就是一张地图。地图编辑器负责画,「地图」 分类的积木负责在运行时读、改,以及让角色在地图上走、找路、看。

地图画在舞台上,不在角色的造型里:上千格的地图只占一个角色,放大、移动、滚动都不会变慢。

地图编辑器:左边是地图和层,中间是画布,右边是图块、地形、图案和物件

打开方式#

  • 顶栏「全部功能」里的「地图」。
  • 积木栏「地图」分类最上面的「打开地图编辑器」按钮。作品里有了地图之后才有这个分类。

地图页跟着当前选中的角色走,标签上写着「地图(角色名)」。选中的角色没有地图时,页面显示 新建入口:

新建地图的几种起点
起点 得到什么
从零开始 一张 8×8 格的空白图块,在造型编辑器里自己画
俯视示例 一套俯视的农场图块:草地、泥土、水岸、石板路、篱笆、树篱、树,带五种地形
横版示例 一套横版关卡的图块:草皮地面、斜坡、木平台、砖墙、尖刺、金币,带三种地形
等距示例 一套等距的图块:菱形的草地、石板、水,和立在上面的石墙、木箱、树。见等距地图
六边形示例 一套六边形的图块:草地、沙地、水、雪地,和立在上面的树林、山、村庄。见交错等距和六边形
上传图块图片 用自己的图,支持 png、jpg、svg
Tiled / LDtk 地图 把在 Tiled 或 LDtk 里画好的地图整张搬进来,见从别处导入
RPG Maker 自动图块 把 RPG Maker 的自动图块展开成地形,见RPG Maker 自动图块

「一格多大」是一块瓦片的边长,单位和舞台坐标相同,可选 8、16、24、32、48、64。示例的 格子大小是固定的。

新建会在作品里添加一个地图角色,排在其它角色后面。地图的大小默认刚好铺满舞台。 作品里已经有地图角色时,新建入口下方会列出它们,点击即可切换过去。

地图角色#

地图挂在一个角色身上。这个角色在舞台上显示的是地图,不是造型;它的造型用来存放图块集的 图片。除此之外它和普通角色一样:

  • 移动、旋转、改大小、显示、隐藏、克隆都有效,地图的所有层一起跟着变。
  • 外观特效里的虚像、亮度、颜色作用于整张地图,其余几种特效对地图无效。
  • 可以写脚本,可以导出为 .sprite3 再导入,复制角色时地图一起复制。

一个角色可以有多张地图,同一时刻显示其中一张,用法和造型相同。左栏最上面的一排按钮用来 切换和新建地图,下面可以改名字、大小(列数 × 行数)和格子的摆法(正交、等距、交错、六边形)。

地图可以很大。一千格见方、两层铺满的地图,缩小到整张看全时仍然是每秒 60 帧。

画地图#

工具条从左到右:

工具 快捷键 用法
选择 V 拖出一片选区。拖动选区是搬移,按住 Alt 拖是复制,Delete 清空,Ctrl + C 把选区变成印章
画笔 B 拖动连续画。按住 Shift 点击,从上一格画直线到这一格。右键擦除,按住 Alt 点击取瓦片
橡皮 E 擦掉当前层的格子
直线 L 拖出一条线
矩形 R 拖出一个实心矩形,按住 Shift 只画边框
油漆桶 G 填满相连的同一种格子,按住 Shift 点击则替换整层里所有同一种格子
地形 T 拖动刷地形,边角自动拼好,右键擦除。见地形
物件 O 放出生点、区域这类标记。见物件
染色 C 给格子染上颜色,瓦片不变,右键去掉。见染色
吸管 I 点击取一块瓦片,拖动把一片格子取成印章

画之前先在右栏的图块上选瓦片。拖动可以一次选中多块,画出来是整片印章。打开「随机」后, 每一格从选中的瓦片里随机取一块,适合铺草地这类需要变化的地面。

其它操作:

操作 方式
水平翻转、垂直翻转、转 90° 工具条上的三个按钮,或 X、Y、Z
撤销、重做 Ctrl + Z、Ctrl + Shift + Z
缩放 滚轮
平移画布 按住空格拖动,或用鼠标中键拖动
看整张地图 工具条右侧的「看整张地图」按钮
显示格线 「网格」
显示碰撞 「碰撞」,见碰撞形状

画布上的虚线框是舞台的范围,蓝色框是地图的范围。画布显示的就是舞台上的真实画面, 别的角色也在其中,可以对照着摆放。

页面最下面一行显示指针所在的列和行、那一格的瓦片、对应的舞台坐标,以及当前工具的用法。

撤销记录的是:画在格子上的每一笔,添加和删除图层、地图,添加、删除、移动和修改物件。 删除图层和地图不再询问,删错了按 Ctrl + Z。每个地图角色有自己的撤销记录。

图案#

一棵树、一座房子、一段桥这样由好几块瓦片拼成的东西,画好一次可以存成图案,以后点一下 就拿在手上。

右栏的图案和染色:两枚图案,三种颜色
  • 用选择工具在地图上框住一片,点右栏「图案」旁的「+」,这一片就存成一枚图案。
  • 没有选区时,「+」存的是手上拿着的印章(在图块上拖选的那一片)。
  • 存完直接输入名字,之后双击名字可以改。
  • 点一枚图案,它成为画笔的印章,画笔、直线、矩形、油漆桶都能用它。
  • 指针移到图案上,右上角出现删除按钮。

图案跟着地图角色保存,这个角色的几张地图共用。

染色#

染色是在不换瓦片的前提下改一格的颜色:熟了的庄稼、被踩过的雪、标出来的危险区域,同一块 瓦片配不同的颜色,不用多画一套图。染上的颜色和瓦片原来的颜色相乘,所以白色的瓦片染什么 就是什么颜色,深色的瓦片染完更深。

拿起染色工具(C),右栏出现「染色」的调色板:

  • 点「+」添加一种颜色,点一种颜色拿在手上。
  • 在地图上拖过,经过的格子染上这种颜色;空格子不染。
  • 右键拖动,或者选调色板最前面带红色斜线的那一格再拖,去掉染色。
  • 双击调色板里的一种颜色可以改它,地图上所有用到它的格子一起变。
  • 右键点一种颜色是删除。地图上有格子在用它时会先问一句,删掉后这些格子变回原来的颜色。

调色板跟着地图角色保存,最多 127 种颜色。

运行时用「把 [层] 第 ( ) 列 ( ) 行染成 [颜色]」染一格,停止后恢复。

层#

一张地图可以有多个层,例如地面一层、路一层、树一层。画笔只画在选中的那一层上。 画在同一层的同一格上,后画的会换掉先画的:云要画在天空上面,就得另开一层。

层列表和层的设置

每个层在舞台上各占一层,和角色排在同一个前后顺序里。层列表把地图的层和作品里的角色 列在一起,上面的在前。拖动一行可以改变顺序:把一个层拖到某个角色上面,这一层就盖在那个 角色前面。

每一行右侧的按钮用来锁住、隐藏和删除图层,双击名字可以改名。选中一层后可以调:

设置 作用
透明度 这一层的透明程度
碰撞 「参与」时这一层的瓦片参与碰撞判断;「纯装饰」时只显示,列表里标「不碰撞」
遮挡 「整层」或「按行」,见下
光照 场景开着光照时,这一层是否「受光」、瓦片是否「挡光」。见光照与物理
生成 「手画」,或者照着另一层按规则自动铺。见规则式地形

原版的图层积木对地图角色同样有效。地图角色执行「移到最前面」「后移 1 层」时,所有层保持 彼此的顺序一起移动。只想移动其中一层,用地图分类里的「把图层 [ ] 移到 [ ] 的 [前面]」。

按行遮挡#

俯视的画面里,人站在树前面应该挡住树干,走到树后面应该被树冠挡住。把树所在的层的「遮挡」 设成「按行」即可:

按行遮挡:左边的人站在树后面,被树干挡住;右边的人站在树前面

按行遮挡的层会和排在它前面、紧挨着它的那些角色一起,按脚底的位置排前后:角色的脚底 比某一行瓦片的底边靠上,这一行就画在角色前面。这些角色彼此之间也按脚底排。遇到下一个 地图层为止,再往前的角色不参与。

「脚底」取的是角色造型外框的最下沿。树这样的大瓦片按它「脚底」那一格所在的行算。

等距、交错和六边形的地图同样可以按行遮挡,按的是画面上的前后:越靠下的格子越在前面。

图块集#

点击右栏「图块」旁的「编辑」进入图块集页。

图块集页:正在往瓦片上刷「实心」,右边是选中的橡树

左栏上半部分是图块集的设置:

设置 作用
名字 图块集的名字
图片 用地图角色的哪一张造型当图块
一格 一块瓦片的宽和高
间距、边距 图片里瓦片之间、图片四周留的空白

图块集的图片就是地图角色的一张造型。点击「在画板里画」会在造型编辑器里打开它,改完之后 地图上所有用到的地方一起更新。

点击一块瓦片,右栏显示它的编号、名字、标志、形状、代价、挡光、动画和大小。起过名字的瓦片会 出现在积木的下拉菜单里。

标志#

标志决定一块瓦片在游戏里起什么作用。自带五个:实心、平台、梯子、水、危险。在「+ 新标志」 里输入名字可以添加自己的,最多 32 个。

在左栏选中一个标志,然后在图块上点击或拖过,就把这个标志刷到瓦片上,再刷一次擦掉。带有 选中标志的瓦片会描上对应颜色的框。标志旁的数字是带这个标志的瓦片数。

两个标志有内建的作用:

标志 作用
实心 挡路、挡视线。原版的「碰到 [角色]?」、「沿地图移动」、寻路、迷雾、物理、挡光都看它
平台 单向平台。「沿地图移动」时能从下面跳上去,站在上面不会掉下来;别的地方不挡

其余标志没有内建行为,由脚本用「碰到 [ ] 的瓦片?」自行判断,例如碰到「危险」就扣血。

碰撞形状#

实心的瓦片默认整格都挡路。左栏「碰撞形状」里有十二种别的形状:四种半格、两种 45° 的坡、 四种缓坡(两格升一格,低的一半和高的一半各一块)、两种倒过来的坡。选中一种,在图块上点击 就刷上去,同时标成实心;再刷一次变回整格。右栏的「形状」也能直接改选中的那一块。

这十二种都不合适时,点右栏「形状」最后那支笔自己画:瓦片放大显示在一块小画布上,上面 是一个多边形。

  • 拖顶点改位置,顶点对齐到八分之一格。
  • 点空白处加一个顶点,右键点顶点删掉它(至少留三个)。
  • 第一次点那支笔时,多边形从这块瓦片现在的形状开始,不是从空白开始。

自己画的形状只能是凸的,画成凹的会自动补成凸的。角色撞上它会被挡住,但不会像坡那样顺着 斜边走上去。

瓦片在地图上被翻转时,形状跟着翻。转了 90° 的斜坡按整格算。

回到地图页,打开工具条上的「碰撞」,实心的部分按形状涂成红色,单向平台在顶上画一道橙色:

打开「碰撞」后:斜坡是三角形,木平台顶上有一道线,尖刺不是实心所以没有标出

代价#

「代价」是寻路时走进这一格算几步,默认是 1。把沼泽、草丛的代价填成 3,找路的角色会在 绕路不超过 3 步时绕开它。实心的瓦片不能走,不看代价。见寻路。

挡光#

场景开着光照、层的「挡光」也开着时,一块瓦片怎么挡光在这里选:

选项 效果
墙体 像墙一样把光挡住,后面是黑的。实心的瓦片默认是它;不实心的瓦片不能选
物体 立在地上的东西:树、柱子、箱子。往背光的一边投一条影子,影子落在地面上。旁边填它有多高,不填按它的图有多高算。不实心的瓦片也可以选
不挡 光直接穿过去。实心但不该挡光的瓦片(栅栏、矮草丛)选它

动画#

选中一块瓦片,在右栏「动画」里把帧数改成大于 1,这块瓦片就会按顺序播放它自己和后面的几块, 每帧的时长在旁边填,单位是毫秒。画到地图上的仍然只是第一块,播放不占用脚本。

帧数后面的「块一跳」是帧距:下一帧是往后数第几块。帧一块挨一块放的填 1。会动的自动图块 (一整套边角都在动的水面)每一帧是一整套模板,下一帧在隔一套的同一个位置上,这时填一套 模板有多少列。

图块上,挨着放的动画的几帧底下有一道青色的线,第一帧左上角有一个三角。

大瓦片#

树、房子这类比一格大的东西,可以把几格合成一块:选中左上角那一格,在右栏「大小」里填它 占几格宽、几格高。图块上会用黄框圈出它的范围。

大瓦片画到地图上只占「脚底」那一格,图从那一格向外伸出去;碰撞、标志也只算在脚底那一格。 「脚底」在右栏的小方格里点选,默认是最下面一排的中间。

动画和大瓦片不能同时用在同一块上。

地形#

画一片草地时,中间用哪一块、边上用哪一块、拐角用哪一块,可以交给编辑器决定。把一整套 边角按固定的排法画在图块集里,告诉编辑器它从哪儿开始,这就是一种地形。之后用地形工具 拖动着刷,边角自动拼好;擦掉一格,周围的边角也跟着变。

俯视和横版两套示例图块自带地形,可以直接用:在右栏「地形」里点一种,工具换成地形工具, 在画布上拖动即可。右键拖动是擦除。

定义地形#

在图块集页左栏最下面的「地形」里点「+」新建一种,然后在图块上点击,把模板的左上角放到 那一格:

定义地形:黄框是模板的范围,黄点表示这块瓦片的哪几个角在地形里

模板有三种:

模板 要画几块 占图块集多大 适合
四角 15 4×4 成片的地面:草地、泥土、水岸、雪地
四边 16 4×4 连成线的东西:路、管道、篱笆、平台
整套 47 7×7 有内角的墙体、土块

选中一种地形后,图块上会画出模板里每一格应该是什么样:

  • 四角:格子的四个角上各有一个点,亮的表示这个角在地形里。
  • 四边:从格子中心伸出的线,指向和它相连的那几个方向。
  • 整套:一个 3×3 的小格,中间是这块瓦片自己,亮的是和它相连的邻居。

照着这些记号把每一块画出来。还没画的格子(全透明)用红色虚线框标出,左栏那种地形后面会 写「缺 N 块」。缺的那几种情况在画地图时用整块代替。

整套模板用的是 47 块素材(blob tileset)里常见的 7×7 排法,按这种排法画的现成素材可以直接用。

其它设置:

设置 作用
名字 积木里按名字指定地形,同一套图块集里不能重名
地图外 四边和整套才有。「算同类」时贴着地图边缘的一侧不画边框;「算空」时照常画

四边和整套的地形还可以指定「也算这种地形」的瓦片:按住 Shift 在图块上点击。地形刷到这些 瓦片旁边时不朝它们画边。横版示例里斜坡就是这样接在地面上的。

刷地形#

  • 四角地形刷的是格子的角:指针靠近哪个格子角就刷哪个,一个角影响它挨着的四格。
  • 四边和整套地形刷的是格子。
  • 用画笔、橡皮改了某一格之后,旁边的四边、整套地形也会照着重拼。
  • 拼出来的结果就是普通的瓦片,可以再用画笔单独修改某一格。

两种地形挨在一起时互相当对方不存在。例如示例里的泥土和水都是「里面是自己、外面是草」, 它们直接相邻的地方接不上,中间需要隔一格草,或者分开放在两层。

规则式地形#

地形工具管的是「一种地面的边角怎么拼」。规则管的事更宽:草皮只铺在最上面一排、土块的侧面 补一道阴影、地面上随机长几棵草、墙根撒几块碎石。做法是把地图拆成两层:

  • 源层只管哪儿有东西。拿随便一块瓦片涂出地面的范围就行,不用管边角。
  • 生成层挂着一套规则,照着源层自动铺。源层一改,生成层马上跟着重算。
规则式地形:「形状」层只涂出地面的范围,「成品」层照着右栏的三条规则铺出草皮和土,再随机放上箱子和尖刺

开始用#

  1. 加一个层,在层的设置里把「生成」从「手画」改成「照着「某一层」」。这一层在列表里标上「生成」, 右栏多出「规则」。
  2. 在右栏的图块上选一块瓦片,点「加一条」。新规则的意思是:源层这一格有东西,就铺手上这块。
  3. 回到源层上画。

生成层不能手画,画了也会被规则盖掉;状态栏会提示去哪一层画。把「生成」改回「手画」, 这一层变回普通的层,已经铺好的格子留着。

一条规则#

一张卡是一条规则:左边一小格一小格是条件,正中间那一格是这一格自己,周围是它的邻居; 箭头右边是对上以后铺哪一块。

条件格 意思 怎么点
虚线空格 不管 —
蓝色实心 源层这一格有东西 左键点一下
打叉 源层这一格是空的 左键再点一下
瓦片小图 源层这一格正好是这块瓦片 手上拿着那块瓦片,右键点一下
瓦片小图带红斜线 不是这块瓦片 右键再点一下

其它设置:

设置 作用
1 / 3 / 5 看多大一圈:只看自己、看周围一圈、看周围两圈
铺哪一块 点「+」加上手上的瓦片,点一块小图拿掉。放了好几块时,每一格随机挑一块。一块都不放是「这儿什么都不铺」
左右翻、上下翻 条件翻过来也算对上,铺的瓦片跟着翻。画一个左端,右端不用再画
百分比 对上以后有百分之几铺。没轮上的格子接着看下面的规则
上下箭头 调先后

规则从上往下看,第一条对上的说了算;一条都对不上的格子是空的。所以特殊的写在上面, 一般的写在下面:先「上面是空的 → 草皮」,再「有东西 → 土」。

中间那一格填「空的」的规则铺在源层没有东西的地方:「自己是空的、下面有东西 → 草」, 草就长在地面上面那一格。

随机是按格子的位置算的:同一个位置永远是同一个结果,重算多少次、存了再打开、协作的两边 都一样。

运行时#

积木改了源层(「把 [层] 第 ( ) 列 ( ) 行设为 [ ]」、填充、清空),生成层同样跟着重算:挖掉 一块土,下面那一块露出来变成草皮。停止以后源层和生成层一起恢复。

一套规则属于一个地图角色,铺的是一套图块集里的瓦片。

物件#

物件是地图上的标记:敌人的出生点、宝箱的位置、一块触发区域。它们不显示在游戏画面里, 只供积木查询。

物件:选中的是一块叫「池塘边」的区域,右栏是它的种类、位置、大小和字段

拿起物件工具(O):

操作 结果
在空白处点击 放一个点
在空白处拖动 拖出一块矩形区域
点击已有的物件 选中它,右栏显示它的设置
拖动已有的物件 移动位置
Delete 删除选中的物件

位置默认对齐到半格,按住 Alt 不对齐。

每个物件有一个种类。右栏「物件」里列出这张地图上已有的种类,点一种,之后放下去的就是 这一种;在「+ 新的种类」里输入名字可以新建。选中一个物件后可以改它的种类、名字、位置和 大小(单位是格),并添加任意多个字段,例如给出生点加一个「血量」。字段的值看着像数字 就按数字保存。

物件属于地图,不属于某一层。

等距地图#

等距地图把格子画成菱形,画面像斜着往下看:策略、模拟经营、迷宫探索常用这种画法。

等距示例搭的一个小院:菱形的草地、石板路和水,两边立着石墙

在左栏「格子」里选「等距」,这张地图就按菱形摆;再选「正交」换回来。格子里放的瓦片不变, 只是摆法变了。选「等距」后下面多出「一格」一行,填一格菱形的宽和高,常见的是宽为高的两倍。

第 0 列第 0 行在最上面,列往右下数,行往左下数。

图块怎么画。 图块集的一格和菱形一样宽、可以比菱形高。地面那块菱形画在这一格的最下面, 上面留给立起来的东西。画到地图上时,图按宽度对齐格子,底边对齐,高出菱形的部分立在格子上。 等距示例的图块一格是 32×48,菱形是 32×16:草地只画了最下面 16 像素,石墙画了 48 像素高。

哪些和正交地图一样。 工具、层、按行遮挡、标志、碰撞形状、地形、规则、物件、图案、染色、 寻路、迷雾、积木都能用。列和行的数法不变,「向 [上] 走一格」的「上」是行数减一的方向,在画面 上是右上。靠前的格子(列加行更大的)盖住靠后的,立着的墙会挡住它后面的地面。

哪些不一样。

  • 「沿地图移动」把角色的碰撞箱当成脚下的一块方地来算,方地的边和格子的边平行。「[脚下] 贴着 [实心] ?」的四个方向也是格子的方向:「右边」是列数加一的方向,在画面上是右下。
  • 列和行要 x、y 一起才能确定,换算用「x ( ) y ( ) 所在的 [列]」和「第 ( ) 列 ( ) 行的 [x]」。
  • 「碰到颜色」和点选只认地面那块菱形,立起来的部分碰不到。

交错等距和六边形#

另外两种摆法都是一行一行横着排,奇数行往右错半格:

  • 交错:格子还是菱形,但整张地图是一个横平竖直的长方形,不是一个大菱形。适合想要等距 的画面、又想要方方正正的地图的时候。
  • 六边形:尖朝上的六边形,每一格有六个邻居,战棋、策略地图常用。
六边形示例搭的一小块大陆:草地、沙滩、水、雪地,上面立着树林、山和村庄

在左栏「格子」里选「交错」或「六边形」,下面的「一格」填一格的宽和高。六边形示例的图块 一格是 32×48,地图上一格是 32×36:六边形本身 36 高,立着的东西再往上伸。

哪些能用。 画笔、橡皮、直线、矩形、油漆桶、选择、吸管、层、按行遮挡、标志、规则、物件、 图案、染色、寻路、迷雾、光照、积木。油漆桶和寻路认的是这种摆法真正的邻居:六边形六个, 交错四个(都是斜着的)。

哪些不一样。

  • 没有地形工具(四角、四边、整套的边角是照方格设计的)。
  • 碰撞形状不起作用,实心的瓦片整格都是实心。
  • 「沿地图移动」不按格子的形状贴着走,撞上实心的格子就停。按格走的游戏用「向 [ ] 走一格」, 方向填角度,角色走到那个方向上最近的邻格的正中间。
  • 「去 x ( ) y ( ) 的下一步方向」给的是画面上朝着下一格的角度,可以直接放进「向 [ ] 走一格」。
  • 列和行要 x、y 一起才能确定,换算用「x ( ) y ( ) 所在的 [列]」和「第 ( ) 列 ( ) 行的 [x]」。

和原版积木的关系#

积木 对地图角色的效果
碰到 [地图角色]? 碰到「碰撞」为「参与」的层上的实心瓦片时成立,按碰撞形状判断
碰到颜色 [ ]? 按地图上看得见的像素判断
移到最前面、前移 / 后移 [ ] 层 所有层一起移动
移到 x y、面向、将大小设为 整张地图一起变
显示、隐藏 作用于整张地图
虚像、亮度、颜色特效 作用于整张地图;其余特效无效
克隆 克隆体带着同一张地图,各自可以切换到不同的地图
当角色被点击 点在任何看得见的瓦片上都算

地图积木#

地图分类里的全部积木

列和行都从 0 开始数,左上角是第 0 列第 0 行。

不必把脚本写在地图角色里。其它角色用这些积木时,指的是场上第一个地图角色的地图。作品里 有多个地图角色时,用「用 [ ] 的地图」指定。

常用#

积木 说明
x ( ) y ( ) 处是 [实心] ? 舞台上这一点所在的格子有没有带这个标志的瓦片。「纯装饰」的层不计
碰到 [实心] 的瓦片? 角色看得见的部分是否碰到带这个标志的格子
沿地图移动 x ( ) y ( ) 见在地图上走
[脚下] 贴着 [实心] ? 上一次「沿地图移动」之后,角色的脚下、头顶、左边、右边贴着什么
把 [层] 第 ( ) 列 ( ) 行设为 [瓦片] 改一格。瓦片可以填名字或编号,「空」是擦掉
[层] 第 ( ) 列 ( ) 行的瓦片 起过名字的瓦片返回名字,否则返回编号,空格子返回空
x ( ) 所在的列、y ( ) 所在的行 舞台坐标换算成格子

移动#

积木 说明
把我的碰撞箱设为宽 ( ) 高 ( ) 角色和地图碰撞时用的方框,以角色的位置为中心
向 [上] 走一格,用 ( ) 秒 按格移动。前面那一格是实心的就不走。方向也可以填角度
把我对齐到格子的 [中心] 移到所在格子的中心或底边中点

格子#

积木 说明
把 [层] 从 ( ) ( ) 到 ( ) ( ) 填成 [瓦片] 一次填一个矩形
把 [层] 里所有 [瓦片] 换成 [瓦片] 整层替换
清空 [层] 擦掉整层
把 [层] 第 ( ) 列 ( ) 行 [水平翻转] 水平翻转、垂直翻转或转 90°
把 [层] 第 ( ) 列 ( ) 行染成 [颜色] 只改这一格的颜色,瓦片不变。染成白色是去掉染色。一次运行里最多同时用 127 种颜色
把 [层] 第 ( ) 列 ( ) 行的地形设为 [地形] 边角自动拼好,周围的格子跟着变。设为「空」是擦掉这一格的地形
把 [层] 读进列表 [ ] 从左到右、从上到下逐格读出,每行的项数等于地图的列数
把列表 [ ] 写进 [层] 按同样的顺序写回

坐标#

积木 说明
第 ( ) 列的 x、第 ( ) 行的 y 这一列(行)正中间的舞台坐标
x ( ) y ( ) 所在的 [列] 舞台上这一点在第几列或第几行。等距的地图、转过角度的地图用这一块
第 ( ) 列 ( ) 行的 [x] 这一格正中间的舞台坐标

侦测#

积木 说明
x ( ) y ( ) 处瓦片的 [名字] 可选名字或编号。有多层时取最前面那一层的瓦片,「纯装饰」的层不计
向 [下] 到 [实心] 的距离 从碰撞箱的那一边量到最近的一块带这个标志的瓦片。方向也可以填角度。2000 以内没有时是 Infinity
到 x ( ) y ( ) 之间没有 [实心] ? 从角色的位置到那一点,中间有没有被挡住。用来判断敌人看不看得见玩家
当碰到 [危险] 的瓦片 帽子积木,从没碰到变成碰到的那一刻触发一次
碰到的瓦片的 [列] 最近一次「碰到 [ ] 的瓦片?」或量距离碰到的那一格的列、行、名字

寻路#

「去 x ( ) y ( ) 的下一步方向」告诉角色:要走到那一点,下一格该往哪边走。它绕开实心的 瓦片,找的是最省步数的路。结果是一个方向(0 上、90 右、180 下、-90 左),可以直接放进 「向 [ ] 走一格」:

重复执行
    向 (去 x (玩家的 x) y (玩家的 y) 的下一步方向) 走一格,用 (0.3) 秒

已经到了,或者没有路可走时,结果是空的,「向 [ ] 走一格」什么都不做。

树篱迷宫里,三个守卫沿着找到的路追玩家,走过的格子用积木染深了
  • 默认只走上下左右。执行过「找路时 [可以] 走斜线」的角色也走斜线,结果里会出现 45、135 这样的方向;斜着走不会擦着墙角过,两边的格子有一个是实心的就不斜走。「向 [ ] 走一格」 同样遵守这一条。
  • 瓦片的代价大于 1 时,走进那一格算多步,路会尽量绕开。
  • 一群角色找同一个目标时只算一次:十几个敌人追同一个玩家,和一个敌人一样快。目标换了格子、 地图改了,才重新算。
  • 目标本身在实心的格子里时,路通到它旁边。
  • 地图特别大时,只在出发点和目标周围的一块范围里找(最多约 26 万格)。
  • 单向平台不挡路。这一组积木不考虑重力,横版游戏用下面的横版寻路。

「把去 x ( ) y ( ) 的路写进列表 [ ]」得到整条路,用来画出路线,或者让角色沿着路连续移动。

横版寻路#

横版游戏里能站的只有脚下有地的格子,从一处到另一处要么走过去,要么从边上掉下去,要么跳。 「横版去 x ( ) y ( ) 该往哪边」和「横版去 x ( ) y ( ) 该跳了?」按这个规矩找路,告诉角色 此刻该按哪个方向键、该不该按跳。脚本照着做就行,速度和重力还是自己管:

当绿旗被点击
横版找路:能跳 (3) 格高 (4) 格远
重复执行
    如果 <<横版去 x (玩家的 x) y (玩家的 y) 该跳了?> 与 <[脚下] 贴着 [实心] ?>> 那么
        将 [下落速度] 设为 (10)
    将 [下落速度] 增加 (-1)
    沿地图移动 x ((横版去 x (玩家的 x) y (玩家的 y) 该往哪边) * (3)) y (下落速度)
    如果 <[脚下] 贴着 [实心] ?> 那么
        将 [下落速度] 设为 (0)
横版寻路找到的一条路:白点是走过的格子,黄色虚线是跳
  • 它认得平地、斜坡、半砖、单向平台(能从下面穿上去、能站在上面)。
  • 跳是照着一次跳满的跳算的:头会不会撞到顶、被墙挡着时能不能贴着墙升上去再过去、落在哪儿。 角色有多高按它的碰撞箱算。
  • 「能跳 ( ) 格高 ( ) 格远」要照角色实际跳得到的填。 填大了它会去跳够不着的台子, 填小了它会放着能跳的路不走。高是原地起跳脚底能升几格,远是平地上跳一次能过几格。
  • 往旁边跳之前它会先走到脚下那一格的中间。在半空中不重新找路,接着往要落的那一格靠。
  • 目标悬在半空(玩家正跳着)时,路通到它正下方能站的地方。
  • 一群角色可以一起问:40 个角色每帧各问一次,一帧不到 1 毫秒。
  • 只能用在正交的地图上。

迷雾#

迷雾把没去过的地方盖成黑的,去过但现在看不见的地方半暗。

迷雾:角色周围亮着,走过的路半暗,其余是黑的
当绿旗被点击
用迷雾盖住地图
重复执行
    揭开 x (x 坐标) y (y 坐标) 周围 (5) 格的迷雾
  • 每一帧都揭开,亮的那一块就跟着角色走,离开视野的地方变成半暗。
  • 实心的瓦片挡视线:墙后面看不见,墙本身看得见。
  • 同一帧里可以揭开好几处(几个队友各看各的),亮的地方合在一起。
  • 迷雾盖在舞台上所有东西的前面:走进黑处的角色看不见,半暗处的角色跟着变暗。不想被盖住的 角色(血条、按钮),在盖上迷雾之后对它用「移到最前面」。
  • 半暗的地方仍然看得见里面的角色。只想在视野里才显示敌人,用「x ( ) y ( ) 处 [看得见] ?」 决定它显示还是隐藏。
  • 迷雾在停止时撤掉。

光照与物理#

光照。 场景开着光照时,地图和角色一样受光。层的设置里:

  • 「受光」关掉后,这一层保持原来的亮度,不随环境光和灯变化。
  • 「挡光」打开后,这一层的瓦片挡住灯光。实心的瓦片默认像墙一样挡,相连的合并成一整面墙, 半格、斜坡和自己画的形状按各自的形状算。每块瓦片还可以单独改成「物体」或「不挡」, 见图块集的挡光。

影子落在地图上:墙的影子、设成「物体」的瓦片的影子、别的角色的影子,地图的地面都接得住。 设成「物体」的瓦片自己不会被自己的影子压黑。

法线贴图。 给图块集那张造型配一张法线贴图(在光照的材质里,和给普通造型 配的做法一样),地图上的每块瓦片就按它迎光发亮、背光发暗:砖缝、石头的凸起、木板的纹路 跟着灯走。法线贴图照着图块集的图画,一格对一格。瓦片在地图上被翻转、旋转时,明暗跟着翻。 强度和「翻转 Y」用的是地图角色材质里的设置。

物理。 作品装了物理扩展时,参与碰撞的层上的实心瓦片自动成为静止的地形, 不需要另外设置:箱子会落在地面上,沿斜坡滑下去。一排地砖在物理里是一条连着的边,刚体滑过 时不会被砖缝绊住。用积木改了瓦片,地形跟着变。单向平台在物理里不起作用。

镜头#

地图比舞台大时,有两种办法让画面跟着角色走。

移动地图角色(见卷轴):不需要别的东西,角色的坐标是画面上的坐标。

用相机扩展。 扩展库里的「Kamera 相机」移动的是镜头,角色和地图都留在原地,坐标就是 世界里的坐标,脚本好写得多。地图直接支持它,不用另外设置:

  • 镜头平移、缩放、旋转,地图跟着变;镜头挪到舞台范围以外的地方,那里的地图照样画出来。
  • 迷雾、光照、按行遮挡跟着镜头走。
  • 地图积木用的坐标不受镜头影响:「x ( ) y ( ) 处是 [实心] ?」填的还是世界里的坐标。
  • 相机的「让 [角色] 不跟随摄像机」对地图角色也有效:把一张缩小的地图设成不跟随,就是一张 固定在屏幕角上的小地图。

从别处导入#

在新建入口点击「Tiled / LDtk 地图」,在文件对话框里一起选中地图文件和它用到的图片。 导入会新建一个地图角色。不能照搬的内容会跳过,导入完成后列出来。

Tiled#

选中地图文件(.tmj)、它引用的图块集文件(.tsj)和图块集的图片。

Tiled 里的东西 导入之后
正交、等距(isometric)、交错等距(staggered)、六边形(hexagonal)的地图 对应的摆法。后两种要是「按 y 轴交错、奇数行错开」(Tiled 的默认设置)
瓦片层 层。数据可以是数组或 base64(不压缩、zlib、gzip),无限地图的分块也支持
组 展开,组名写在层名前面
对象层 物件。点是点,矩形是区域,多边形取外接方框;自定义属性成为字段
瓦片的翻转、旋转 保留
瓦片的类型(class) 瓦片的名字;有名为 name 的属性时以它为准
瓦片上画的碰撞形状 这块瓦片标成实心(整格)
名为 solid 或 collides 的真值属性 这块瓦片标成实心
瓦片的动画 帧是连着的几块、每帧一样长时保留
瓦片的其它自定义属性 保留,可以用「x y 处瓦片的 [ ]」读。名为「代价」的数字用于寻路
层的透明度、显示、视差 保留

会被跳过的:一块瓦片一张图的图块集、图片层、层的偏移、帧不连续或时长不一的动画。

不能导入的,会提示原因:

  • .tmx、.tsx(XML 格式)。在 Tiled 里另存为 .tmj、.tsj。
  • 按 x 轴交错、或者偶数行错开的交错等距和六边形地图。在 Tiled 的地图属性里把交错轴改成 Y、 交错索引改成奇数。
  • 瓦片层用了 Zstandard 压缩。在 Tiled 的地图属性里改成 zlib 或不压缩。
  • 少选了地图引用的图块集文件或图片。

LDtk#

选中工程文件(.ldtk)和它用到的图片。关卡分开保存的工程,把那些 .ldtkl 文件也选上。

LDtk 里的东西 导入之后
关卡 每个关卡一张地图,都在同一个地图角色上,停在第一张
瓦片层、自动层 层。同一格里叠了好几块时,多出来的放进紧挨着的另一层(名字后面带序号)
数值层(IntGrid) 一个隐藏的层:每种值是一块半透明的色块瓦片,放在名叫「数值」的图块集里
实体 物件。能调整大小的实体是区域,其余是一个点,落在实体的轴心上;字段成为物件的字段
图块的枚举标签 标志
图块的自定义数据 名为 data 的属性
瓦片的翻转、层的透明度和显示 保留

数值层通常用来表示哪里能走。导入时这样判断哪些值是实心:这一层只有一种值;或者值的名字像 墙(wall、solid、ground、collision 等);或者层的名字像墙,取它的第一种值。导入 完成后的提示里写着哪些值被当成了实心,要改就到「数值」图块集里刷「实心」标志。隐藏的层 照样参与碰撞。

会被跳过的:LDtk 自带的图标图块集、层的偏移、关卡的背景图。没有对齐到格子的瓦片会挪到 最近的格子上。

RPG Maker 自动图块#

RPG Maker 把一种地面的所有边角压缩在几格里,画的时候现拼。在新建入口点击「RPG Maker 自动 图块」,选一张这样的图,每种地面会展开成一套地形,导入完成后直接用地形工具刷。

图 里面是什么 导入之后
A1 会动的水面,每种三帧 每种水面一套 47 块的「整套」地形,三帧轮着播。瀑布是另一种拼法,不导入,会提示有几组
A2 地面、草地、路,每种占 2×3 格 每种一套 47 块的「整套」地形
A3 建筑的外墙,每种占 2×2 格 每种一套 16 块的「四边」地形
A4 墙:上面一排墙顶,下面一排墙面 墙顶是「整套」,墙面是「四边」
  • 是哪一种自动认:文件名里带 A1–A4 的(RPG Maker 自己的图都这么起名)按文件名;不然看图的 尺寸,尺寸一样的 A1 和 A2 再看内容。
  • A2 不必是整张,只有一种地面的 2×3 小图也可以;空着的格子跳过。
  • 一格多大是从图的尺寸推出来的。
  • 展开后的图是地图角色的一张造型,可以在造型编辑器里接着改。
  • A5 是普通的一格一块的图块,用「上传图块图片」。

运行时的改动会恢复#

积木对格子、染色和图层设置的改动只在运行期间有效。点击停止后,地图回到编辑器里画的样子, 迷雾撤掉,运行中途也可以用「把地图恢复原样」主动恢复。要永久修改,在地图编辑器里画。

物件在运行时不能修改。

多人协作#

多人协作时,地图的改动实时同步:别人画的每一笔、加的图层、改的物件, 这边马上看到。

  • 两个人同时画,两边的改动都保留,凑在同一处画也一样。只有两个人同时改了同一格时, 才以其中一个人的为准。
  • 图块集、地形、规则、标志、图案、调色板、物件、层的设置同样同步,每一项以最后一次修改为准。
  • 照规则生成的层两边各自算,结果一样。
  • 每个人各自选择正在看哪一张地图,互不影响。
  • 撤销只撤自己这边的改动;地图的撤销和代码区的撤销分开。
  • 修改地图需要「编辑角色」的权限。没有这个权限的人打开地图页是只读的:能看、能缩放和平移, 工具和设置都点不动,状态栏写着「这个协作里你只能看地图,不能改」。

细节#

  • 地图需要浏览器支持 WebGL2。不支持时地图不显示。
  • 地图保存在作品文件里,随 .sb3 和 .sprite3 一起保存。
  • 地图角色旋转之后,「沿地图移动」仍然按没有旋转的方框计算。

相关#