今天讲一下,uinty3d中的地形(Terrain)以及利用uinty官方提供的标准资源包美化我们的地形。

废话不多说,直接上图,这是我们想要做出的效果:

UNITY 实现水流效果 unity怎么弄水_右键

T

UNITY 实现水流效果 unity怎么弄水_UNITY 实现水流效果_02

随便捏的地形,就不要去计较漂不漂亮了。

我们可以看到,这个地形中,有一个平整的高柱形山,其中还有凹陷下去的一个烟囱,又像一个凸出于地表的一个水井,上面有茂密的草地,旁边是一个类似大龙坑地形。然后地上种满了树(种类不同)和草地,裸露出来的地面也贴上了纹理。

 

要实现这样的效果,从无到有的第一步就是得先添加一个叫的地形(Terrain)[ təˈreɪn ]的东西到场景(sence)中去。

在Hierarchy [ ˈhaɪərɑ:ki ]层级面板中空白地方右键 -> 3D Object -> Terrain即可看到一个默认大小为500*500的白色方框出现在地图中。就是左边的这块。

UNITY 实现水流效果 unity怎么弄水_宽高_03

这个白花花的地面可太难看了啊,受不了的我们第一个会想往上面贴上纹理,可是纹理图从哪里来,自己从网上找?找到合要求的估计小半年都过去了。

幸运的是,unity有内置的资源包!!免费的!只需要导入项目之后就可以直接使用了。

在Project面板中空白部分点击右键 -> Import Package -> Environment之后可以看到弹出一个提示框(默认应该是全部勾选即表示导入包中所有资源,我这里项目中已经导入过一次了,所以不会重复导入相同的资源),直接Import就完成了该资源包的导入工作。

UNITY 实现水流效果 unity怎么弄水_UNITY 实现水流效果_04

Environment是unity提供的内置资源包,是unity自带的,默认放在unity 的安装路径下的\Editor\Standard Assets中(如果没有找到也可以下载或者拷贝其他人的标准资源包放到该目录即可),其中还有其他的十分有用并且具有官方示例意义的资源包,有第一人称,第三人称,粒子效果等等。下次一并解析并针对其中的代码进行探讨。

UNITY 实现水流效果 unity怎么弄水_右键_05

回到地形编辑。导入资源包之后就可以在Project面板中找到 Standard Assets -> Environment,打开可以看到资源包中的所有资源了。暂时搁置,因为unity会在选择资源的时候自动匹配项目中的资源。

双击选择Hierarchy面板中的Terrain,在Terrain组件中选择对地形的操作Paint Texture。

UNITY 实现水流效果 unity怎么弄水_右键_06

Edit Texture中add textture。

UNITY 实现水流效果 unity怎么弄水_Standard_07

可以看到本来空白的一个地形白全部覆盖成所选择的纹理了,这里要注意的是,地形纹理是可以添加多个的,第一个添加的会默认覆盖整个地形,而之后添加的纹理则会按照设定的Brush Size笔刷大小,Opacity [ əʊˈpæsəti ]硬度或者说透明度,Target Strength强度,至于这些参数所造成的具体效果,建议自己动手取最大跟最小值进行对比。

UNITY 实现水流效果 unity怎么弄水_Standard_08

好了,地有了,但是看上去光秃秃的,还是很丑,让我们一起来植树种草绿化这方世界吧。

UNITY 实现水流效果 unity怎么弄水_宽高_09

选择Paint Trees后,Edit Trees中add Tree弹出这么个玩意

UNITY 实现水流效果 unity怎么弄水_右键_10

要我们选择一个Tree Prefab树的预制体。所幸Environment资源包中已经有了很完善的树预制体,点击小圆圈,

可以看到项目中所有的预制体都在这了,找到树的预制体,就只有下列四种。任意选择一种之后,就可以种树了。

UNITY 实现水流效果 unity怎么弄水_宽高_11

UNITY 实现水流效果 unity怎么弄水_宽高_12

UNITY 实现水流效果 unity怎么弄水_右键_13

UNITY 实现水流效果 unity怎么弄水_右键_14

可以看到树的参数也有很多,Tree Density设置树种植的密度,Tree Height设置树的随机高度范围(为了逼真),还有
Lock Width to Height锁定宽高比(防止树的高低跟胖瘦不协调),Random Tree Rotation随机朝向(还是为了逼真)。

注意,按住左键拖动就可以在划过的痕迹种下树,按住shift加左键拖动可以把树抹掉。

UNITY 实现水流效果 unity怎么弄水_宽高_15

(弄这么丑的心形去告白应该会被打死吧)

种完树其实种草也差不多,区别在于树是一个预制体,而草,只是一个2d 的贴图而已

UNITY 实现水流效果 unity怎么弄水_UNITY 实现水流效果_16

这里的参数就不多解释了,无非是随机宽高枯荣颜色等而已。

在地图上一抹,诶?我草呢?怎么没有?!

不会没有,不信你再仔细看,拉近点看,再近点,看到了吧。

远距离时草地会消失,你可以用绿色的地皮画在草地。

UNITY 实现水流效果 unity怎么弄水_右键_17

同样,按下左键拖动种草,shift加左键除草。

神说,要有地,于是有了地,神说要有树跟草,于是有了树跟草,神说,来座山吧。

那就动手捏个山吧。山(或者说为凹凸地形)的操作就是这三个了

UNITY 实现水流效果 unity怎么弄水_Standard_18

第一个是上升下降地形:

UNITY 实现水流效果 unity怎么弄水_Standard_19

第二个是绘制高度:

UNITY 实现水流效果 unity怎么弄水_右键_20

第三个是平滑高度:

UNITY 实现水流效果 unity怎么弄水_Standard_21

地形的操作参数都是

UNITY 实现水流效果 unity怎么弄水_右键_22

笔刷样式,笔刷大小,硬度,问题不大吧。尝试几遍它们的效果。

wei唯一不同的是绘制高度重多了一个

UNITY 实现水流效果 unity怎么弄水_宽高_23

,flatten按钮会将所选高度应用到整个地形

我示范一下这三种地形操作。主要的区别还是要靠自己多操作去体会。

UNITY 实现水流效果 unity怎么弄水_右键_24

基本上就这样了,还有一个水的元素怎么做的,简单,直接把Environment -> Water -> Prefabs ->  WaterProDayTime拉到地图上去就行了。

具体地形自己发挥咯。