1- RPG MAKER的自动砖块拼接
在目前比较流行的游戏制作工具RPG MAKER里面,做地图编辑的时候,有一种特殊的砖块,不需要手动拼接,而直接用鼠标绘制,就自动帮你拼好地块。
如下图所示
![](http://www.cppblog.com/images/cppblog_com/johndragon/autotile.jpg)
而这一切是使用下面这张图片来拼接而成的。RPG MAKER把它保存在RGSS\Standard\Graphics\Autotiles里面。
![](http://www.cppblog.com/images/cppblog_com/johndragon/tiles.jpg)
RPG MAKER本身砖块是使用32*32的规格来进行组合的,这张AUTOTILE资源,是3*4排列的32*32的图片。
经过观察发现,上面的图片是使用下面这个图片中的元素按照16*16的大小分割来拼接而成的。
为了验证这个想法,我做了下面这个图片,替换掉RPG MAKER原来这张图片。
![](http://www.cppblog.com/images/cppblog_com/johndragon/numtiles.jpg)
再用RPG MAKER察看刚才的地图,变成了这样
![](http://www.cppblog.com/images/cppblog_com/johndragon/autotilenum.jpg)
从中可以看出,RPG MAKER果然是用16*16的小块来进行分割和拼接。
2- 实现方法
决定一个32*32的图块由哪4个16*16的小图块拼接的关键,是这个图块的周围的同类块的位置和数量。下面介绍一个拼接调色板的方法。
步骤1- 把图块周围的邻接块位置编号,如下图
![](http://www.cppblog.com/images/cppblog_com/johndragon/BITS.jpg)
图中标记了8个BIT,每个BIT表示这个位置上是否有同类块,有就是1,没有就是0。这样,我们就得到了一个0-255的索引。
步骤2- 建立图块拼接调色板
我们针对这个索引,建立一个256元素的表。
在这个256元素的表里面,把每个索引对应的目标块的样子描述一下。
描述一个目标块,需要4个16*16的小块。而表示这个小块,可以使用他们在AUTOTILE图片中的索引。
做完这一步,我们得到了256个4元组。
因为AUTOTILE的图片规格都是一样的,所以,这个调色板可以用在每一种自动拼接的砖块上。
这两个简单的步骤结束后,我们就能够正确的绘制每一个自动拼接的图块了。因为它索引的数据是拼接方法,所以叫它是拼接调色板。