unity学习 --- 地形

Posted Metallic Cat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity学习 --- 地形相关的知识,希望对你有一定的参考价值。

1.创建地形的前提是我们有对应的地形资源

 2.这五个按钮就是对地图的编辑

第一个按钮是 create neighbour terrains --- 创建相邻的地形

点击它后在我们原来的地形周围就会生成虚空小格子,点击这些小格子的话就会在格子中生成一个相同的地形,并且相邻区域也会增加 --- ctrl + z 可以取消掉我们额外创建的terrain

每次我们创建一个地形都会在roject的assets中生成一个terraindata数据文件

 当我们撤销掉我们创建的额外地形的时候,创建这些额外地形时自动生成的terraindata文件并不会跟着被删掉,我们必须手动delete掉这些数据才行


3.第二个按钮是paint terrain --- 绘制地形

brush -- 笔刷,刷子

opacity --- 不透明度 --- 不透明度越大,地形的升高速度越快

(我们可以用ctrl + z来撤回我们的操作)

paint terrain 中的set height选项的作用就是设置我们绘制的地形的最大高度

按住shift + 左键 并选取一块地方(target -- 目标)还能够让我们进行取高度的操作(sample -- 取样)--- 即获取我们选择的目标的高度

 Flatten -- 是展平的意思 tile 是瓦片,此处指的是我们创建出的terrain片

设置好高度之后选择这个展平瓦片,就能使得我们当前选中的terrain片中所有部分的高度全部被设置为我们选好的高度,如果是Flatten all 的话则是将所有的terrain片都变为同一高度

为什么我们要设置整体地形的高度呢? --- 因为地形的默认高度是0,如果不重新设置高度来抬高地形的话就会导致我们无法绘制出下凹地形

这个绘制选项就是用来使得地形更加平滑的 

这个blur direction参数选择0的时候 -- 就是将高的部分变低,低的部分变高

-1 ---  高的部分变低,低的部分不变

1 -- 低的部分变高,高的部分不变

4.第四个按钮则是绘制纹理

这个是地形层 

此时地形层为空,我们需要编辑地形层来添加一个层,这个添加的地形层资源就来自于我们的assets文件中 

 添加了地形层后,纹理就会自动覆盖地形

 创建层,添加层,替换层,移除层

地形层可以有多个!

我们添加的地形层可以有多个,然后我们加入的第一个地形层纹理会自动覆盖整个地形,而加入的第二个地形层纹理则不会

我们在地形层纹理中选择一个后就能够用笔刷去涂层了


第三个按钮 --- 绘制树

 1.tree destiny -- 这个是树的密度

2.random tree rotation --- 随机树的旋转

3.Lock width to heigh --- 锁定树的高度和宽度

4.color variation(变异) -- 色差

这个是树贡献全局照明 

注意随机选项中间的这个是可以拉开,拉的越开随机的范围也越大,然后这个也可以整体左右移动,越往右树越高,越往左树越低

 这个功能的作用是大量放置树 --- 点进去后设定数目,然后点种植就会自动分散好数目了


补充几个细节点:

1. 下面图中的白色部分是可以按的,这个按了之后可以实现观察模式的转换,现在是透视模式,即第一人称视角观察模式 --- 在这个模式下按鼠标右键后就能在scene中按wasd移动观察

才按一下就是正交模式,在正交模式下按鼠标右键只能在scene中按ad移动

(一般我们都是用透视模式进行操作的)

 2.关于地形树的阴影 -- 这个得在directionlight中调参数

这个就是光照下的阴影类型设置


第四个按钮 ---  绘制细节

 绘制草细节的时候,这个目标强度调节的其实是我们绘制的草的密度,越往右草的密度越大

最后一个按钮就是地形的各种细节设置了

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视图中来编辑地形。

技术分享


在地形菜单中有起个button:

技术分享

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


接着以下便是地形画笔:

技术分享

brush size:画笔宽度取值范围

Opacity:画笔高度的取值范围


选择地形菜单和画笔后,便能够编辑地形的起伏了。

只是由于地形贴图默认是灰色,故会很的难看。

技术分享

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

技术分享

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


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

技术分享

平滑后的地形图:

技术分享

每当创建完地形后,系统都会自己主动的将Terrain  Collider(地形碰撞)组件加入到地形中。该组件能够让地形感应与其它物体之间的碰撞。

给地形表皮一个物理材质后。地形上的物体将依据设置的碰撞參数而发生碰撞,比方说:弹力,动力。摩擦力等。

技术分享

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

is trigger:是否开启地形碰撞

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

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



地形贴图

系统默认的灰色地形实在是不可恭维。

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

导入后。学习怎么给地形加入新的贴图。首先在地形菜单条中点击第四个button(地形贴图),可发现眼下在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视图中渲染即可了。

技术分享



































以上是关于unity学习 --- 地形的主要内容,如果未能解决你的问题,请参考以下文章

我想学习unity3d游戏程序开发 要学习啥?有推荐的书么?

Unity 3D 地形系统概述|| Unity 3D 创建地形

(四)Unity纹理、贴图和材质

unity4怎么创建一个横向的洞穴,用地形降低的方法不行

Unity编程入门2 地形系统和游戏对象

Unity3D 学习路线?