Unity练习1- 古迹探险开发(上)
- Unity基本使用
- 地形系统
- 光照系统
- 粒子系统
- 导航系统
- 动画系统
- 控制角色移动,使用了Unity中的导航系统
- 人物动画控制,动画状态切换
idle
-》walk
- 场景中人物有一个灯光的控制、火焰粒子特效、
- 地形搭建(包括树木、花草、岩石的绘制)
- 背景音乐、音效
对于开发者,地形系统、光照系统、粒子系统不是核心需要掌握和熟练的东西。特别对于初学者,对于这几个系统知道核心使用即可,不需要花过多时间在这几个系统研究上。
✅ 地形系统
➡️ 创建地形:大纲窗口右键 | 3D Object |Terrain

【地形系统】一般是用来搭建一些荒野地形
(有山有水树木等)。 城市地形
一般是通过建模软件来创建的。

这个地形实际是很大的,有1000米。在【地形设置】的下面可以修改地形的宽度和高度:


可以给它改成:宽高100m,Terrain Height
也设置成100, 放大一些查看:
Terrain Height
:代表地形的最大高度。可理解为海拔,现在是处于海平面上,海拔为0.

➡️ 第一个图标:Create Neighbor Terrain

点击它周围的方块,就可以快速扩大地形:

➡️ 第二个图标: Paint Terrain

第一栏下拉框有多个选项:

-
【常用选项:】
Raise or Lower Terrain
拉高或降低地形的。(最高拉高100m就不再拉高了,因为设的Terrain Height
:100;按住shift
即可拉低地形,最低就到海平面: 0) -
选项
Smooth Height
:可调节地形让它整体更平滑一些,笔刷刷到比较高的地方就会让它降低一些,刷到低的地方就会拉高一些。

第二部分是笔刷的设置Brushes
:

- 笔刷的
opcity
字段,控制响应的强度。值越大,笔刷在绘制地形时响应越快。想让响应降低一些,就可以降低opcity的值
➡️ 第三个图标: Paint Tree
绘制树木,后面细说

➡️ 第四个图标: Paint Details
比如绘制花草,后面细说

➡️ 最后一个图标:Terrain Settings
上面说的地形设置
✅ 地形系统 - 绘制贴图

选择Paint Texture
,然后在 Terrain Layers
这里需要添加一些绘制贴图所需要的图层。通过多层材质来绘制地形的。
点击 Edit Terrain Layers | Create Layer
,选择一个【地形专用】Texture,( 提前导入的.unitypackage资源包里的)

比如,选择一个草地的Texture
,双击就可以应用在地形上。

这个NewLayer
会保存在Assets
里面。这个NewLayer是可以重复使用的,比如游戏里有多个地形,都可以使用这个NewLayer。

然后我们再添加一个层,泥泞的Texture:

添加完第二个层之后,地形上并没有变化。因为它只会第一个层当作默认层刷满整个地形。第二个层就需要自己【手动去刷
】到地形上:

当我们把Texture贴图刷上去之后,可以通过 Tiling Settings
下的Size
去【修改贴图平铺的大小】:

➡️ 法线贴图
有些Texture贴图是有设计法线贴图的,有些没有。

像这种紫色的一般是法线贴图:

我们的这个【泥泞的Texture】是有法线贴图的:

- 法线贴图一般是这种紫色的贴图
- 法线贴图的作用简单来说是为了让你的地形看起来更有3D的感觉
通过【一张Texture】 + 【一张法线贴图】达到更高的3D地形效果。本来我们可以把Texture做的精细度更高一些,但精细度越高的Texture越耗性能。所以采用Texture+法线贴图的方式以求达到同样的视觉效果。
Texture做成平面图,再通过法线贴图记录地形上点的法线是多少,通过法线去计算这个位置颜色的深浅,通过这样达到更好的3D效果。
一张平面图上,它是通过不同位置颜色的深浅,制作成这种3D 泥泞的感觉。

加上法线贴图后,更有泥泞小路的感觉。
✅ 树和草的绘制
- 先绘制一个合适的地形
- 再给地形绘制合适的贴图
- 再绘制植被:大型的比如树木。小型的比如花草。
➡️ 绘制树

Edit Tress
| Add Tress
| 选择树的 Prefab
| 点Add
按钮

然后就可以在地形上绘制树了。

-
Tree Density
: 可以控制树的密度 - 按
shift
绘制是【移除】树
可以添加一些不同的树绘制:

➡️ 绘制花草

点击 Edit Details
按钮 :

有个 【 Add Grass Texture
】是用来添加草的材质的。选择草的贴图 | 点击 Add
:

因为草在资源设计时,设计成就是【贴图图片】,并不是模型。而树设计的是模型。

TGA(Targa)
格式是计算机上应用最广泛的【图像格式】。在兼顾了BMP的图象质量的同时又兼顾了JPEG的体积优势。并且还有自身的特点:通道效果、方向性
。在CG领域常作为影视动画的序列输出格式,因为兼具体积小和效果清晰的特点。
图像扩展名为.tga
,该格式【支持压缩】,使用不失真的压缩算法,可以带通道图
,另外还支持行程编码压缩。

✅ 关于刚体组件
创建小球,添加刚体组件。
如果小球在场景中没有展示出来,可以拖动改变下小球的y
轴位置,可能是跑到了地形的下面,也可以先reset
一下,再拖进地形中也行:

选择Main Camera
右键 【align with view
】方便观察。

-
Mass
,它的质量越大,它和其他物体发生碰撞时,对其他物体产生的影响越大。 -
Drag
, 阻力 -
Angular Drag
,角阻力。比如在山坡上滚动时,增加它的角阻力,它滚动就没那么快了。 -
Use Gravity
,用来设置它是否受到重力影响。如果设置不受到重力影响,但是还是会受到其他物体的力的影响。比如和其他物体碰撞它时,它也会受力运动。 -
is Kinematic
,如果☑️勾选,说明不受任何力的影响。

Constraints 下的 Freeze Position 和 Freeze Rotation 用来冻结轴向的。比如:
- ☑️ 勾选
Freeze Position
的 Y,就冻结Y了,游戏物体受到力之后,就只能在X和Z轴方向运动了。
✅ 碰撞器和触发器

✅ print 日志打印和日志类型
Unity 脚本。
➡️ Debug
类是Unity提供的一个内置类
。

控制台打印结果:

➡️ Unity 中的生命周期函数
-
Awake
函数 -
Start
函数 -
Update
函数
通过 Unity Manual | Scripting | Scripting concepts | Order of execution for event functions
查看详细说明
➡️ 碰撞检测函数

➡️ 触发检测函数

✅ Unity中四种灯光
➡️ 四种灯光类型:方向光(Directional
)、点光源、聚光灯(Spot
)、区域光

➡️ 灯光 三种模式:实时(Realtime
)、混合(Mixed
)、烘培(Baked
)

游戏中如果想模拟一个很好的效果的话,对于【光的运用】是非常重要的。光照的计算是比较耗费性能的, 因为光照要计算它被什么东西遮挡了, 它是背对着光,还是斜对着光,对于斜度计算,该位置点光照应该亮一点还是暗一点 。。。比较暗一点的地方可能还会受到【漫反射】的地方,

-
烘培(
Baked
):表示预先计算好,因为实时计算比较耗性能, 提前把光照的效果计算好, 然后生成一张贴图, 比如这个树的阴影 直接制作成贴图,游戏运行中直接显示这张贴图,就不需要在游戏运行过程中实时计算了。 -
实时(
Realtime
):实时计算有什么好处那?游戏物体是必须实时计算的,对于静态物体,我们可以使用烘培, 对于一些动态物体就不能提前烘培好了。
➡️ 旋转
可以通过【旋转方向光】控制黑夜、黄昏、白天....



再比如,点光源:
