首页 > 代码库 > 【Unity 3D】学习笔记三十:游戏元素——游戏地形

【Unity 3D】学习笔记三十:游戏元素——游戏地形

游戏地形

在游戏的世界中,必定会有很多丰富多彩的游戏元素融合其中。它们种类繁多,作用也不大相同。一般对于游戏元素可分为两种:经常用,不经常用。常用的元素是游戏中比较重要的元素,一般需要使用脚本来实现某些特殊功能。比如:玩家控制的主角对象,需要攻击的敌人等。因此常用的元素直接影响游戏的运行,而不常有的元素,比如说游戏里的天空,云朵等。不影响游戏的主线,仅仅提升游戏的整体效果。


创建地形

在3D游戏里,经常会出现起伏的地形。本文变总结回顾下如何在游戏里创建游戏地形。

首先在导航菜单栏里选择Terrain----Create Terrain创建一个游戏地形。出现入选图:


(经过我旋转拉近后的,方便更加直观的观看)



地形参数

地形参数包括地形的宽度,高度,长度,分辨率,高度图等。创建完地形后,便可以任意的修改它们。在导航菜单里选择Terrain----Set Resolution后,弹出Heightmap resoluton窗口。直接输入修改即可。


简单的介绍下Heightmap resoluton窗口中的参数:

Terrain Width:地形总宽度

Terrain Height:地形总高度

Terrain Length:地形总长度

Heightmap resoluton:地形高度图的分辨率

Detail Resolution:细节分辨率,主要用于地形上的草或者其他模型,其数值越高,显示效果越好。当然同时也需要越高的机器配置。

Detail Resolution per patch:细节分辨率补丁

Control Texture Resolution :控制贴图分辨率

Base Texture Resolution :相对贴图分辨率



编辑地形

到现在为止,我们的地形还只是一个巨大的平面。要实现起伏的效果,首先在hierarchy视图中,选择Terrain 。此时会在右侧的inspector视图中来编辑地形。



在地形菜单中有起个按钮:


他们的含义分别为:编辑地形高度,编辑地形特定高度,平滑过度地形,地形贴图,添加树模型,添加草与网格模型,其他设置。


接着下面便是地形画笔:


brush size:画笔宽度取值范围

Opacity:画笔高度的取值范围


选择地形菜单和画笔后,便可以编辑地形的起伏了。不过因为地形贴图默认是灰色,故会非常的难看。


在地形菜单中点击第二个按钮(编辑地形特定高度),此时打开设置地形特定高度页面。与先前的页面一样,只是多了一个Height:


在编辑地形高度页面中,Opacity:是最大高度,而在编辑特定高度页面,Height才是最大高度。比如在编辑特定高度页面,Opacity的值是100,而Height的值是80,那么地形最高为80


如下图,在地形菜单中点击第三个按钮(平滑过渡地形),然后选择一个适合的画笔,接着就可以平滑过度地形了。


平滑后的地形图:


每当创建完地形后,系统都会自动的将Terrain  Collider(地形碰撞)组件添加到地形中。该组件可以让地形感应与其他物体之间的碰撞。给地形表皮一个物理材质后,地形上的物体将根据设置的碰撞参数而发生碰撞,比如说:弹力,动力,摩擦力等。


Material:物理材质,设置模型与地形碰撞后的物理摩擦效果

is trigger:是否开启地形碰撞

Terrain  data:地形资源,连接project视图中的地形文件

create tree colliders:是否创建树木碰撞



地形贴图

系统默认的灰色地形实在是不可恭维。在实际中,为了让地形看起来更加美观。unity提供了地形标准资源包。首先我们需要将地形资源包导入当前的工程中。在project视图中点击鼠标右键,选择import-----Terrain  Assets。

导入后,学习怎么给地形添加新的贴图。首先在地形菜单栏中点击第四个按钮(地形贴图),可发现目前在Textures列表中没有任何地形贴图。点击右下角edit---textures(编辑贴图),将弹出一个选择列表。


在选择列表中,选择add Textures选项,将会出现下图左边窗口。


先简要说明下各参数意义:

texture:在资源文件夹中选择一张地形贴图

normal map:在资源文件夹中选择一张正常地形贴图

size x:贴图x轴宽度

size y:贴图y轴宽度

offset x:贴图x轴偏移量

offset y:贴图y轴偏移量

点击texture中的select,将弹出select texture2D窗口,该页面所有的贴图文件都源于project视图中的文件夹。


然后在select texture2D窗口中选择任意贴图双击,然后在add terrain Textures窗口中右下角点击add即可.

在添加地形贴图后,就可以渲染贴图了。首先选择一个渲染的贴图文件夹,然后选择一个渲染笔。最后直接在scene视图中渲染就行了。