本章中,我们会开始使用Godot的内置包创建一个户外场景,并使用不同类型的车辆在其中穿行。
完成本章学习后,读者可以:
- 通过模板创建实景
- 创建地形并修改生成山丘和山谷
执行计划
本章中我们会创建一个岛屿,可在其中行进。所以执行计划很简单,步骤如下:
- 导入要使用的模板绘制环境的轮廓。
- 使用模板创建地形。
- 为模板上色。
- 创建山丘和山谷。
- 添加树木及其它类型的植被。
- 使用箱体添加建筑物。
下图对完成本章学习后的一个预览截图。
TODO
小岛轮廓
本章我们会创建一个小岛。和前一章一样,我们会使用一张在Photoshop创建的图片定义轮廓和主特性。
可以看到其轮廓非常粗糙,但表现出了小岛的外形。读者可能会注意到:
- 环绕小岛的水域。
- 占岛大部分的沙滩。
- 棕色表示路径的区域。
- 标识树木位置的绿点。
- 表示建筑物位置的黑框。
- 小岛中间示意湖泊的蓝圈。
这张图片为500×500像素,对应关系大约为1等于Godot中的一米。如果希望创建自己的轮廓,可以使用这些设置轻松完成。地图不必非常详细,因为稍后我们会了解到,我们会进行着色并删除(或擦除)其中的一些元素。当前重要的是需要有一个可在Godot中直接使用的轮廓。
下载所需材料
本系列文章及相关代码文件均会开源至 Github,基础篇的资源文件地址为https://github.com/iTranslateX/godot/tree/main/foundation/resources。
导入所需资产
此时我们可以开始制作小岛了。前面提到我们会添加树木及模拟小岛形状的地形。为此需要导入一些包来完成这些任务。这些包中包含有地形资产。
- 在Godot中,问你那一个场景(Scene | New Scene)。
- 通过点击顶部菜单中的AssetLib打开AssetLib窗口。
- 在搜索框中输入terrain,选取(即双击)名为Heightmap terrain的资产。
- 在接下来的窗口中点击Download按钮。
- 在库下载完成后再点击Install按钮。
- 安装结束会在弹窗中提示成功。
- 安装完成后,就会在文件系统窗口中看到addons文件夹。
下面需要启用这个插件,进入Project | Project Settings | Plugins通过点击Enable选项进行启用,如下图所示。
启用好插件后,我们可以就可以开始创建地形了。
- 通过顶部菜单的3D选中3D视图/工作空间。
- 在Scene栏中,点击3D Scene,这会新建一个Spatial节点。
- 按下快捷键CTRL/CMD+A(新增节点),在搜索框中输入terrain并在列表中选择HTerrain类型的节点。
- 这便会在场景树中创建一个名为HTerrain的对象。
可以看到HTerrain节点右侧出现了一个警告标识。为存储地形所生成的数据,我们需要新建一个文件夹与新地形进行关联,执行操作如下:
- 使用文件系统栏,新建文件夹:在res://上右击,在上下文菜单中选择New Folder,为其命名,比如使用terrainData。
- 在场景树中选择HTerrain节点。
- 使用检查器,找到HTerrain版块中的Data Directory。
- 点击Data Directory属性右侧的文件夹图标。
- 选择刚刚创建的文件夹(如terrainData),需要使用该文件夹存储地形数据。
- 点击Select This Folder按钮。
完成以上操作后,就可以为地形添加山丘和山谷了。
如果在场景树中选中了HTerrain对象,就会看到屏幕下方的窗口中有一些可修改地形的工具,如下图所示。
该窗口中包含很多功能,可以对地形应用纹理以及减少或提升其中的区域。
此时我们已拥有所有用于创建小岛的资产,只差一个轮廓地图。下面就进行导入:
- 切换至文件系统(如浏览器或访达)。
- 找到一开始下载的资源包目录。
- 选择名为gameMapOutline.png的文件。
- 将其拖拽到Godot的文件系统栏中。
创建小岛的轮廓
现在已经有了大部分资产。我们来创建地形:
- 在场景树中选中HTerrain。
- 点击底部窗口中的Edit按钮。
在新窗口中,点击屏幕左侧的+按钮创建新纹理。
- 这会创建名为Texture 0的纹理。
- 接下来点击位于Albedo区下方的Load按钮,
- 在新窗口中,选择刚刚导入的纹理gameMapOutline.png并点击Open。
- 应该会在接下来的窗口中看到已选择了该纹理,此时可点击Close按钮。
此时查看视窗,会发现该纹理在重复了多次。
但我们只想要它展示一次,所以需要修改纹理的平铺方式:
- 选中HTerrain对象。
- 在检查器中,找到Script Variables分区,将Rendering | Shader Params | U Ground UV Scale属性设置为500。
- 完成以上操作后,应该会看到地形仅应用了一次该纹理。
已经有了轮廓,我们可以开始抬升或降低地形中的各部分。这时需要使用视窗右上角的一些工具。
为地形添加深度
至此,我们成功添加了小岛的轮廓。下面该为地形添加立体效果了。
请执行如下步骤:
- 选中HTerrain节点。
- 使用顶部工具栏,选择Lower Height工具(左起第二个)。
- 可以切换为更方便的视图,来通过y轴查看场景:在视窗中找到坐标轴工具、点击y轴。视图会发生相应的变化。
- 还可以连续使用鼠标中键和平移工具(SHIFT+拖拽)放大地形的右下角。
TODO - 在视窗中,拖拽蓝色区域,必要的话可将笔刷修改为11(以覆盖更大的区域)。这么做时,会发现大片地形消失了,如下图所示。
TODO - 持续操作直至覆盖了小岛旁的大部分水域。
添加水域
使用现实纹理绘制小岛
添加湖泊和高山
在3D环境中添加汽车
小结
更多内容:Godot从入门到精通系列文章