使用网格图GridMap

简介

Gridmaps 是一种用于创建3D游戏关卡的工具, 方式类似于2D中使用 TileMap . 使用一个定义好的可以放在一个网格中的 3D mesh (a MeshLibrary) (译注,grid和mesh都译作网格, 这里为了清晰,mesh直接使用英文,grid则译作网格)对象集合搭建关卡, 就像您使用无限多数量的乐高积木搭建世界一样.

就像使用tilemap的tile一样, 碰撞和导航也可以添加到网格中.

示例项目

要学习GridMaps是怎么样工作的, 请先下载示例项目: gridmap_demo.zip.

解压缩此项目并使用 导入 按钮将其添加到项目管理器.

创建Mesh库

首先, 您需要一个 MeshLibrary, 它是可以在gridmap中使用的Mesh的集合. 打开 MeshLibrary_Source.tscn 场景以查看如何设置网格库的示例.

../../_images/gridmap_meshlibrary1.png

可以看到, 这个场景有一个 Spatial 节点作为它的根, 以及一些 MeshInstance 子节点.

如果您的场景中不需要任何物理, 那么到这里就完成了. 但是, 在大多数情况下, 您还需要给网格指定碰撞体.

碰撞

您可以手动为每个Mesh指定 StaticBodyCollisionShape. 或者, 您可以使用 网格(Mesh) 菜单根据Mesh数据自动创建碰撞体.

../../_images/gridmap_create_body.png

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

../../_images/gridmap_mesh_scene.png

材质

在生成网格库时, 只使用网格内的材质. 节点上设置的材质将被忽略.

导出Mesh库

要导出库, 点击 Scene -> Convert To.. -> MeshLibrary... , 并将其保存为资源.

../../_images/gridmap_export.png

可以在项目中找到已导出的名为 "MeshLibrary.tres" 的Mesh库.

使用网格图(GridMap)

创建一个新场景并添加一个GridMap节点. 通过从 文件系统(FileSystem) 扩展面板拖动资源文件并将其放入Inspector中的 Theme(主题) 属性中来添加Mesh库.

../../_images/gridmap_main.png

单元格/大小(Cell/Size) 属性应设置为Mesh的大小. 在本示例中您可以使用默认值. 将``Center Y``属性设置为 Off.

现在你可以开始设计关卡了, 从调色板中选择一个图块, 然后在编辑器窗口中用左键单击它. 要删除一个图块, 按住 Shift 并使用右键单击.

单击 GridMap 菜单可以查看选项和快捷键. 例如, 按下 S 绕y轴旋转图块.

../../_images/gridmap_menu.png

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

../../_images/gridmap_select.png

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

../../_images/gridmap_shift_axis.png

在代码中使用GridMap

有关节点方法和成员变量的详细信息, 请参阅 GridMap.