使用 GridMap¶
前言¶
Gridmaps 是一种用于创建3D游戏关卡的工具, 方式类似于2D中使用 TileMap . 使用一个定义好的可以放在一个网格中的 3D mesh (a MeshLibrary) (译注,grid和mesh都译作网格, 这里为了清晰,mesh直接使用英文,grid则译作网格)对象集合搭建关卡, 就像您使用无限多数量的乐高积木搭建世界一样.
就像使用tilemap的tile一样, 碰撞和导航也可以添加到网格中.
创建 MeshLibrary¶
首先,您需要一个 MeshLibrary,它是可以在网格地图中使用的 Mesh 的集合。打开“MeshLibrary_Source.tscn”场景以查看如何设置网格库的示例。

可以看到, 这个场景有一个 Spatial 节点作为它的根, 以及一些 MeshInstance 子节点.
如果您的场景中不需要任何物理, 那么到这里就完成了. 但是, 在大多数情况下, 您还需要给网格指定碰撞体.
碰撞¶
您可以手动为每个 Mesh 指定 StaticBody 和 CollisionShape。或者,您可以使用“网格”菜单根据 Mesh 数据自动创建碰撞体。

请注意,“凸”(Convex)碰撞体对于简单 Mesh 效果更好。对于更复杂的形状,请选择“创建三角网格静态体”。一旦每个网格都分配了物理主体和碰撞形状,就可以使用网格库了。

材质¶
在生成网格库时, 只使用网格内的材质. 节点上设置的材质将被忽略.
导出 MeshLibrary¶
要导出库,点击场景 -> 转换为.. -> 网格库...,并将其保存为资源。

可以在项目中找到已导出的名为“MeshLibrary.tres”的 MeshLibrary。
使用 GridMap¶
创建一个新场景并添加一个 GridMap 节点。通过从文件系统面板拖动资源文件并将其放入检查器中的“Theme”(主题)属性中来添加网格库。

“Cell/Size”属性应设置为网格的大小。在本示例中您可以使用默认值。将“Center Y”属性设置为“未启用”。
现在你可以开始设计关卡了, 从调色板中选择一个图块, 然后在编辑器窗口中用左键单击它. 要删除一个图块, 按住 Shift 并使用右键单击.
单击“GridMap”菜单可以查看选项和快捷键。例如,按下 S 绕 Y 轴旋转图块。

按住 Shift 并使用鼠标左键拖动将绘制一个选择框. 您可以使用相应的菜单选项复制或清除所选区域.

在菜单中, 您还可以更改正在绘制的轴, 并将绘图平面在其轴上移动得更高或更低.
