This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
瓦片地图是一个组件,允许您将瓦片图源中的瓦片组装或绘制到大网格区域上。瓦片地图通常用于构建游戏关卡环境。您还可以在地图中使用瓦片图源中的碰撞形状进行碰撞检测和物理模拟(示例)。
在创建瓦片地图之前,您需要先创建瓦片图源。请参阅瓦片图源手册了解如何创建瓦片图源。
要创建新的瓦片地图:
新的瓦片地图会自动在瓦片地图编辑器中打开。
要在瓦片地图上绘制瓦片:
选择一个瓦片作为笔刷(按空格键显示瓦片调色板)或通过在调色板中点击并拖动选择几个瓦片来创建包含多个瓦片的矩形笔刷。
使用选定的笔刷进行绘制。要擦除瓦片,可以选择一个空白瓦片作为笔刷使用,或选择橡皮擦(编辑 ▸ 选择橡皮擦)。
您可以直接从图层中拾取瓦片并将选择用作笔刷。按住Shift并点击瓦片可将其拾取为当前笔刷。按住Shift时,您还可以点击并拖动以选择一块瓦片作为更大的笔刷。此外,还可以通过按住Shift+Ctrl以类似方式剪切瓦片,或通过按住Shift+Alt擦除它们。
要顺时针旋转笔刷,请使用Z。使用X进行水平翻转,使用Y进行垂直翻转笔刷。
要将瓦片地图添加到游戏中:
您可以通过多种不同的函数和属性在运行时操作瓦片地图(请参阅API文档了解用法)。
您可以在游戏运行时动态读取和写入瓦片地图的内容。为此,请使用tilemap.get_tile()
和tilemap.set_tile()
函数:
local tile = tilemap.get_tile("/level#map", "ground", x, y)
if tile == 2 then
-- 将草地瓦片(2)替换为危险的洞瓦片(编号4)。
tilemap.set_tile("/level#map", "ground", x, y, 4)
end
除了Id、Position、Rotation和Scale属性外,还存在以下组件特定属性:
Blend Mode 属性定义了组件图形应如何与其后面的图形进行混合。以下是可用的混合模式及其计算方式:
src.a * src.rgb + (1 - src.a) * dst.rgb
src.rgb + dst.rgb
src.rgb * dst.rgb
src.rgb - dst.rgb * dst.rgb
瓦片地图有许多不同的属性,可以使用go.get()
和go.set()
进行操作:
tile_source
hash
)。您可以使用瓦片图源资源属性和go.set()
更改此属性。请参阅API参考中的示例。material
hash
)。您可以使用材质资源属性和go.set()
更改此属性。请参阅API参考中的示例。默认的 tilemap 材质具有以下常量,可以使用 go.set() 或 go.animate() 进行更改(详情请参考材质手册)。示例:
go.set("#tilemap", "tint", vmath.vector4(1,0,0,1))
go.animate("#tilemap", "tint", go.PLAYBACK_LOOP_PINGPONG, vmath.vector4(1,0,0,1), go.EASING_LINEAR, 2)
tint
vector4
)。vector4用于表示色调,x、y、z和w分别对应红色、绿色、蓝色和alpha色调。game.project文件中有一些与瓦片地图相关的项目设置。
有一些外部地图/关卡编辑器可以直接导出到Defold瓦片地图:
Tiled是一个知名且广泛使用的正交、等距和六边形地图编辑器。Tiled支持多种功能,可以直接导出到Defold。在Defold用户”goeshard”的这篇博客文章中了解更多关于如何导出瓦片地图数据和附加元数据的信息。
Tilesetter可用于从简单的基础瓦片自动创建完整的瓦片集,它有一个地图编辑器,可以直接导出到Defold。
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB