怎么学Unity开发(三)

1. 地形系统

大型的3D游戏往往离不开丰富的地形,尤其是开放世界类型,会有丰富的地形供玩家进行探索

1.1. 准备工作

这里又重新创建了一个3D游戏的项目,然后去到Unity的资源商城里去搜索一些资源

image-20220422225910756

其实需要的呢也就是官方提供的这套标准资源

使用方面按照之前的流程进行资源导入,然后勾选上需要用到的资源类型,进行确认

image-20220422230628587

这里仅仅选中这些资源当中的环境类资源就足够使用了

image-20220422230837889

此时,可以着手创建地形

1.2. 地形创建

image-20220423110230027

接下来在场景中创建地形对象

image-20220423110422279

场景中随后生成了一个巨大的平面,这就是地形对象

image-20220423110554664

点开该对象的属性,并切换到设置一栏,可以看到地形对象上的一些参数

image-20220423110641873

向下滚动,可以找到有关当前地形对象大小的信息

刚刚创建出来的地形对象的长和宽都是1000,高度为600

image-20220423111133486

创建的小立方体默认大小是1 * 1,因此可以发现地形这个平面是有多大了

1.3. 地形编辑

对于地形的编辑工作主要通过该面板完成

image-20220423111341564

1.3.1. 创建相邻的地形

image-20220423111555986

第一个按钮用于创建相邻的地形

image-20220423112551033

选中后当前地形的几个相邻区域高亮显示,点击可用于快速扩张地形

image-20220423112910358

添加后,相邻区域也增加了,每一次添加都会伴随着地形文件的创建

image-20220423113152759

注意

如果要删除,Assets目录下添加的地形文件不会删除,需要手动清除

1.3.2. 绘制地形

image-20220423113312606

绘制地形的内容是最丰富的也是最有趣的

image-20220423113708096
抬高或降低

这个类型笔刷主要用于绘制山峰和盆地,大致勾勒出地形的高度、轮廓

image-20220423113944040

绘制前需要准备一下笔刷,这里的笔刷有几个属性

  • 笔刷的形状:就是每一笔点下去形状,通常用的多的是圆形,当然,边缘一般比较柔和,显得更加自然
  • 笔刷的尺寸:也就是笔头的粗细,笔头粗的处理大面积的区域填充,笔头细的主要便于勾勒细节
  • 不透明度(或者可以理解为笔刷的硬度):硬度越高,高度的变化越剧烈;硬度越低,则越平缓
image-20220423114642055

左侧的笔刷硬度较高,更容易绘制出陡峭的地形,右边的更柔和,可以表现出平缓的山坡

另外,笔刷绘制时加上Shift,表现出地形的下降

image-20220423115101874
绘制洞
image-20220423115324364

这个功能的主要作用就是在地形上凿一个洞,实际上就是删除部分面

image-20220423115505393

直接去掉的是这块地形模型的面,显得太过突兀,需要山洞之类的模型放置进来进行填补和平滑

设置高度
image-20220423190157690

这里相当于是设置了绘制的高度上限,比如说把高度修改为100

image-20220423190345693

那么在当前的场景中,所能够绘制的最大高度就被限制在了100,于是就产生了这样一个平台

另外,还可以使用该功能进行高度采样,只需要在需要取样的高度的位置点击的同时按住Shift,就能够进行高度取样,此时高度就会被采集到Height的位置

image-20220423192040985

并且Flatten Tile展平的功能也较为常用,可以将当前地形的整体平面展平,然后设置到指定的高度,Flatten All则可以影响到其他相邻地形

这个最经常用的场景就是在地形绘制前,设置整体的高度就比较方便挖坑,然后设置一些池塘、湖泊等低洼地带

平滑地形
image-20220423192951432

主要用来对于地形进行抛光

image-20220423193432235 image-20220423193536511

在面板中有一个可以调节模糊方向的属性,靠近-1,对于山尖的削弱作用明显,会变秃,而靠近1,对于山尖周围的削弱更明显,山尖会更尖

绘制纹理
image-20220423214731006

这个过程相当于是给地形上色,这里给地形上色的过程是通过地形层级完成的,涉及到样式、上色往往离不开层级的概念,绘画的小伙伴应该都深有体会

首先,需要县创建一个层级

image-20220423215643047

此时,选中并添加了一个层

image-20220423220014320

然后整体地形都会被应用上该纹理

image-20220423215945794

当然,通常的纹理层级都不是单层的,往往会有各种内容,比如可能这里会有山间小道

image-20220423220451374

这个时候就添加一个山间小道的纹理层级,用于绘制小路

注意

这里的几个层间可以像调色板一样进行切换,使用不同的纹理进行绘制

image-20220423220719636

1.3.3. 种树

image-20220423221402260

切换到种树的Tab下,然后选择树的模型

image-20220423221917635

这里使用资源包下的内容

image-20220423222120826

此时,也是可以选择多种类型进行切换

image-20220423222242494

在面板的下方会有关于树的一些属性可以调节,由于这些树是通过笔刷进行绘制的,因此点一下会生成多棵树,可以通过调节笔刷的大小和树的密度,控制间距和疏密程度

树木的高度、树木旋转的角度、以及颜色往往给定一个范围,然后在此范围内进行随机生成,这样往往显得更加自然

树木的宽高比多数情况情况是锁定的,这其实代表生成的树在随机生成的过程中伴随着尺寸的变化,依然是进行等比例的缩放,将其取消可以生成一些宽高比更加多样的树木的类型,这个当然还是视自己的需求而定

image-20220423224030055

这样非常方便地生成了一个小树林

而在这样的场景中浏览,可以使用鼠标右键按住,然后利用WASD在场景中进行移动,并且按住Shift可以进行疾跑,在像地形这种面积比较大的模型中使用也是很有必要的

image-20220423224604032

另外还有这样一个按钮,可以在当前的地形直接弄来大量的树,这个通常用于森林场景的快速构建,会很方便

1.3.4. 绘制细节

image-20220423225500885

往往用来绘制草皮,毕竟之前的纹理仅仅是一张壁纸

image-20220423225730343

然后这里选择一种草纹理添加并绘制,整个过程和树似乎区别不大

image-20220423225940207

这里不透明度代表的依然是笔刷的硬度,也就是这一刷下去的草的疏密情况,而后一个属性目标强度,实际上是设置了一个上限,意味着最终的草的密度不能够超过多少,比如说拿着笔刷在同一块地方反复刷,不会导致该区域的草过于密,其实这应该是考虑到一个绘制过程的简化,这样就可以随便涂,不用担心画的不均匀,就像在PS中创建新的图层一样,不用担心会画脏其他部分,可以在该图层放肆涂色一样,还是很好用的😄

image-20220423230848664