使用tilemaps¶
介绍¶
tilemap是用来创建游戏布局的平铺网格。使用它有几个好处 TileMap 设计级别的节点。首先,它们可以通过将瓷砖“绘制”到网格上来绘制布局,这比单独放置瓷砖要快得多。 Sprite 一个接一个的节点。第二,它们允许更大的级别,因为它们是为绘制大量瓷砖而优化的。最后,您可以将碰撞、遮挡和导航形状添加到图块中,为图块添加其他功能。
项目设置¶
这个演示我们将使用以下取自肯尼的“抽象平台”艺术包的瓷砖。你可以找到整套 here 但在这个演示中,我们将坚持使用这个小集合。
创建一个新项目并将上面的图像放在项目文件夹中。
使用瓷砖集时,相邻瓷砖的匹配非常重要。Godot的默认设置是使用内插的“过滤”模式导入二维图像,这将导致瓷砖之间的边界难看。选择图像并单击导入选项卡。关掉 Filter
然后单击“重新导入”。见 导入图像 有关详细信息。
tilemap节点¶
添加新的 TileMap 节点到场景。默认情况下,tilemap使用方块网格。您还可以使用基于透视的“等轴测”模式或定义自己的自定义瓷砖形状。
在Inspector的“cell”部分下有许多属性,您可以调整这些属性来自定义Tilemap的行为:
Cell Size
这定义了网格的大小。这应该与瓷砖的像素大小相匹配。默认值为
(64, 64)
.
YSort
这会使瓷砖按顺序绘制
Y
定位,以便在“高”瓷砖的顶部绘制“低”瓷砖。
Half Offset
andTile Origin
这些属性会影响瓷砖相对于网格位置的位置。
Quadrant
定义用于批处理绘图的块大小。这会对性能产生负面影响。除非你知道你在做什么,否则不要改变它。
Custom Transform
用来改变瓷砖的形状。如果有非方形瓷砖,请使用此选项。
所有这些选项都可以保留为本演示的默认值。
创建tileset¶
一旦您配置了tilemap,就可以添加 TileSet . Tileset是 Resource 它包含关于瓷砖的数据-它们的纹理、碰撞形状和其他属性。当游戏运行时,tilemap将各个图块组合成单个对象。
要添加新的tile set,请单击“tile set”属性并选择“new tileset”。
执行此操作时,“tileset”面板将在编辑器窗口的底部打开:
首先,您需要添加将用于瓷砖的纹理。单击“将纹理添加到tileset”按钮并选择 tilesheet.png
图像。
接下来,单击“新建单个平铺”并在图像中拖动以选择所需的平铺。单击“启用快照”按钮可以更容易地选择整个图块。黄色矩形将出现在所选瓷砖周围。
单击场景树中的tilemap,您将看到新创建的tilemap现在显示在右侧。在视口中单击,可以放置瓷砖。右键单击以删除它们。
很容易意外地选择和移动tilemap节点。要避免这种情况,请使用节点的锁定按钮:
碰撞形状¶
如果你制作的地图需要碰撞-例如墙壁、地板或其他障碍物-那么你需要将碰撞形状添加到任何你想被视为“实体”的瓷砖上。
单击编辑器窗口底部的“tileset”返回tileset工具。单击先前定义的图块(用黄色勾勒)。选择“碰撞”选项卡,然后单击“创建新矩形”按钮。确保仍启用网格捕捉,然后单击并拖动图块。方形碰撞形状以浅蓝色显示:
您可以以相同的方式向图块添加遮挡和导航形状。
Atlas 瓦片¶
您可以使用一个图集同时定义一组图块,而不是一次添加一个单独的图块。单击“New Atlas”并拖动以选择整个瓷砖页。
如果还没有,请确保将快照设置中的“步骤”更改为 (64, 64) 或者你的瓷砖可能会被切成小块。您可以在Inspector中找到:
定义了地图集后,可以像以前一样将碰撞形状添加到各个瓷砖中。您也可以单击“图标”选择其中一个图块来表示地图集。
回到tilemap中,您可以选择Atlas图块,您将看到它包含的所有图块:
除了在定义图块时节省时间外,在处理大量图块时,将类似图块分组在一起也会有所帮助。