Unity 提供了多种工具来创建环境特征,例如地形和植被。要在场景中添加地形 (Terrain) 游戏对象,请从菜单中选择 GameObject > 3D Object > Terrain。此过程也会在 Project 视图中添加相应的地形资源。默认情况,场景中出现一个大型平坦的平面。地形的 Inspector 窗口提供了许多工具,可使用这些工具创建细节化的景观特征。

接下来,我们新建一个名称为“TerrainDemo”的工程,然后添加Terrain游戏对象。

unity 怎么制作地形笔刷 unity笔刷刷地形_unity教程

虽然看起来就是一个平面,但是它对应的Inspector检视视图中属性内容是不一样的。

unity 怎么制作地形笔刷 unity笔刷刷地形_unity 怎么制作地形笔刷_02

我们可以看到这个Terrain游戏对象一共有三个组件:Transform,Terrain,Terrain Collider。其中Transform组件不再介绍,Terrain Collider用于碰撞,暂且不介绍,主要是Terrain组件。该组件下方有五个工具按钮,如下所示:

unity 怎么制作地形笔刷 unity笔刷刷地形_unity入门_03

他们从左到右依次是:Create Neighbor Terrains(创建周边地形),Paint Terrain(绘制地形),Paint Trees(绘制树木),Paint Details(绘制植被)以及最后一个Terrain Settings(地形设置)。我们首先来看最后一个Terrain Settings(地形设置)选项按钮。在这里有一个很重要的参数就是地形的尺寸和高度参数设置。如下图所示:

unity 怎么制作地形笔刷 unity笔刷刷地形_unity教程_04

默认情况下,创建的地形大小为1000*1000米,高度为600米。

接下来我们介绍Create Neighbor Terrains工具按钮,其实就是创建新的地形平面,然后再平面上绘制新的地形,这样做的目的就是通过许多的平面对象来拼凑成一张更大的地形地图。当然,我们也可以设置当前地形平面的大小。但是,我们尽量不要创建大尺寸的地形平面。因为大部分的大地图都是由若干的小地图拼接而成的。这个很容易理解,因为根据当前玩家位置来绘制周围地形地图的性能消耗肯定要小于绘制整个游戏地形地图的性能消耗。

接下来,我们介绍Paint Terrain(绘制地形)这个工具的使用。

unity 怎么制作地形笔刷 unity笔刷刷地形_unity入门_05

这个工具很强大,我们注意到“Stamp Terrain”是一个下拉选择框,其选项如下:

Raise or Lower Terrain:   使用画笔工具绘制地形高度。

Paint Holes:                    隐藏地形的某些部分(例如山洞等等)。

Paint Texture:                  应用表面纹理(例如草皮等等)。

Set Height:                      使用数值来调整地形高度。

Smooth Height:               使用平滑的方式来改变地形高度(主要绘制地形的细节)。

Stamp Terrain:                在当前高度贴图之上标记画笔形状。

大家注意到,不管大家选择那一个选项,下面都会有“Brushes”笔刷的工具供大家使用。Unity在地形绘制的时候,基本上都是通过笔刷来完成的操作的。这笔刷有三个属性可以让大家设置,第一就是形状,第二就是大小,第三就是透明度。熟悉PhotoShop的同学,对于笔刷的使用应该非常了解,Unity也是参考了其他绘图软件的优点,采用了笔刷的方式,让大家所见所得的去“绘制”我们的地形地貌。大家还可根据需要创建具有独特形状或特定参数的自定义画笔,要创建新画笔,请单击 New Brush 按钮,这里不详细介绍了。

在这里,我们选择第一项“Raise or Lower Terrain”工具可改变地形区块的高度。

unity 怎么制作地形笔刷 unity笔刷刷地形_unity 怎么制作地形笔刷_06

从该选项下面的解释来看,鼠标左键是提升高度,如果同时按下Shift键的话,则是降低高度。接下来,我们就从“Brushes”右边选择一个笔刷的形状,默认大小为82,透明度为10,如下所示:

unity 怎么制作地形笔刷 unity笔刷刷地形_unity入门_07

然后我们将鼠标移动到Scene视图中的地形平面上面。

unity 怎么制作地形笔刷 unity笔刷刷地形_unity基础_08

我们可以看到上图中的效果。它的样子就是我们选择笔刷形状的样子。如果我们觉得笔刷太小,可以使用 Brush Size 滑动条可控制工具来增加笔刷的尺寸。接下来,我们在地形平面上按下鼠标并拖动鼠标就能提高地形高度,如果按住 Shift 键的同时单击并拖动鼠标可降低地形高度(直接在地形平面上降低高度是不行的,必须升高之后才能降低),操作就是这么简单。请大家注意的是,Opacity 滑动条可确定将画笔应用于地形时的强度,Opacity 值为 100 表示将画笔设置为全强度,值越高改变速度越快,幅度越大。大家可以尝试修改不同的值试一试就明白了。如下所示:

unity 怎么制作地形笔刷 unity笔刷刷地形_unity基础_09

想要绘制出起伏平滑的地形,并不是一件容易的事情。如果想要控制绘制地形的高度,可以选择“Set Height”选项。使用 Set Height 工具可将地形上某个区域的高度调整为特定值。使用 Set Height 工具进行绘制时,当前高于目标高度的地形区域会降低,而低于该高度的区域会升高。Set Height 可用于在场景中创建平坦的水平区域。

unity 怎么制作地形笔刷 unity笔刷刷地形_unity_10

如果要修改地形的细节,可以选择“Smooth Height”。使用Smooth Height 工具可以将附近区域平均化,柔化景观,并减少突然出现的变化,不会显著升高或降低地形高度。调整 Blur Direction 值以控制要柔化的区域。如果将 Blur Direction 设置为 –1,则该工具会柔化地形的外部(凸出)边缘。如果将 Blur Direction 设置为 1,则该工具会柔化地形的内部(凹入)边缘。若要均匀平滑地形的所有部分,请将 Blur Direction 设置为 0。Brush Size 值确定要使用的画笔的大小,而 Opacity 值确定该工具对要绘制的区域进行平滑的速度。

unity 怎么制作地形笔刷 unity笔刷刷地形_unity 怎么制作地形笔刷_11

接下来介绍Paint Texture选项,使用该功能可以将纹理(如草、雪或沙)添加到地形平面上,其实就是给平面贴一张纹理图片。我们去哪里获取地形纹理贴图呢?我们可以从官方资源商店下载免费的纹理资源包,当然也可以使用上个章节中提到的Unity官方资源包中的“Environment.unitypackage”。我们将其导入到当前项目中,这个过程就不再演示了,大家直接看导入的结果吧。

unity 怎么制作地形笔刷 unity笔刷刷地形_unity教程_12

大家可以在“Standard Assets\Environment\TerrainAssets\SurfaceTextures”目录下找到几张地表纹理图片,我们就使用他们了。使用Paint Texture选项必须先单击 Edit Terrain Layers 按钮以添加地形图层。如下所示:

unity 怎么制作地形笔刷 unity笔刷刷地形_unity基础_13

我们点击“Edit Terrain Layers...”,然后选择“Create Layer...”

unity 怎么制作地形笔刷 unity笔刷刷地形_unity 怎么制作地形笔刷_14

在弹出的窗口中,Unity自动为我们展示了当前工程中的图片,我们就选择其中的纹理贴图后双击即可。这里我们先选择“SandAlbedo”纹理图片,新增加的“NewLayer”图层。

unity 怎么制作地形笔刷 unity笔刷刷地形_unity入门_15

同时,我们发现在Scene视图中的平面统一被赋予了贴图。

unity 怎么制作地形笔刷 unity笔刷刷地形_unity入门_16

显然,这样的操作效果并不是很好,我们还可以继续添加新的地形纹理贴图图层。这里我们选择“GrassHillAlbedo”的纹理图片,如下所示

unity 怎么制作地形笔刷 unity笔刷刷地形_unity教程_17

新的图层创建完毕后,我们就需要使用画笔工具来进行绘制。我们选择刚刚创建的新地形纹理贴图图层,然后到Scene视图中,将鼠标放置地形平面上。接下来,我们只需要按下鼠标并拖动,就可以将刚刚的纹理绘制到地形平面上面。

unity 怎么制作地形笔刷 unity笔刷刷地形_unity入门_18

这次我们可以换一个笔刷,并且调整笔刷大小以及它的透明度。然后,我们在地形上绘制。

unity 怎么制作地形笔刷 unity笔刷刷地形_unity教程_19

我们发现,新绘制的纹理地貌会覆盖掉旧的纹理地貌。通过这种方式,我们就可以使用多张纹理来绘制各种各样的地貌,并且将这些地貌交会融合在一个地形平面上。如果有专业的美工人员帮助我们制作精美的地形贴图的话,相信一定能够做出非常棒的地貌效果,这里我们还是以入门学习为目的,就不在细致的制作这些地形效果了。

unity 怎么制作地形笔刷 unity笔刷刷地形_unity基础_20

关于地形编辑我们就介绍到这里。