Unity进阶
概述
主要学习2D和动画相关、角色控制器、导航寻路系统
认识模型的制作过程
UV是纹理贴图坐标的简称,它有U轴和V轴,类似空间的xyz轴,他是把3D模型上的点平铺到2D图片上,即用2D平面上的点映射3D模型上的点。纹理贴图指的是一张2D图片记录着3D模型的UV信息和颜色信息,这样就可以通过纹理贴图给3D模型上色
材质:模型外表的表现,通过纹理贴图的信息使用不同的着色器算法,呈现不同的表现效果。如:金属、塑料。。
2D相关
图片导入设置
Unity支持的图片格式
unity一般使用JPG,PNG,TGA三种格式
图片设置的六大部分
(一)纹理类型
主要是为了让纹理图片有不同的使用类型
纹理类型:
(二)纹理形状
(三)高级设置
(四)纹理类型
(五)纹理类型
(六)纹理类型
Sprite
2D物理系统
SpriteShape
Tilemap
动画基础
Animation动画窗口
Animation动画状态机
2D动画
序列帧动画
骨骼动画–2D Animation
骨骼动画–Spine
模型导入相关
导入概述
Model模型页签
Rig操纵(骨骼)页签
Animation动画页签
Materials材质纹理页签
3D动画相关
3D动画使用
动画分层和遮罩
动画1D混合
动画2D混合
动画子状态机
动画IK控制
动画目标匹配
状态机行为脚本
状态机复用
角色控制器
# 导航寻路系统
Unity中的导航寻路系统本质上是在A星寻路算法的基础上进行了拓展和优化
1)导航系统使用流程
- 将地面、路障等静态对象的 Static 属性设置为 Navigation Static;
- 在 Navigation 窗口烘焙(Bake)导航网格;
- 给导航角色添加 NavMeshAgent 组件;
- 给导航角色添加脚本组件,并在脚本组件中设置导航目标位置(navMeshAgent.SetDestination)
导航网格
用来生成寻路的地形数据
Object页签
打开Windows->AI->Navigation窗口,选中地面、路障等静态对象,Navigation中的Object页签中勾选Navigation Static
,如果需要一个平面跳向另一个平面则需要勾选Generate OffMeshLinks
Bake页签
在 Navigation 窗口烘焙Bake页签点击Bake
会生成生成导航网格文件NavMesh
Agent Radius:烘焙边缘精确度
Agent Height: 烘焙高度精确度(决定是否可以过拱桥)
Max Slope: 最大坡度
Step Height: 角色爬台阶时每步能跨的最大高度
Generated Off Mesh Links
Drop Height: 掉落高度
Jump Distance: 跳跃距离
Areas页签
添加地形标签和寻路权重
Agents页签
代理页签
导航网格寻路组件 NavMeshAgent
用来帮助我们根据地形数据计算路径, 游戏角色对象需要挂载该组件NavMeshAgent
参数
Base Offset:导航角色与网格中心的偏移量
Speed:导航过程中最大速度
Angular Speed:拐弯时角速度
Acceleration:加速度
Stopping Distance:离目标多远停下
Auto Braking:当角色快达到目标时,自动减速(巡逻移动不要开启)
Radius:导航角色半径
Height:导航角色高度
Quality:导航质量,质量越高,导航算法越优,导航路径越短,但是性能消耗越大
Priority:导航角色优先级(多个导航角色过独木桥时,谁先过)
Auto Traverse Off Mesh Link:自动跨越分离路面
Auto Repath:自动重新规划路径(点击不可走的区域会自动走到最近可走的点)
Area Mask:分层剔除,设置导航角色可以走哪些层
属性和方法
1 | // 设置导航目标 |
导航网格连接组件 OffMeshLink
用来处理地形中间有断层时,让角色从一个平面跳向另一个平面
在前面只要两个平面勾选了Generate OffMeshLinks
并修改了Drop Height
和Jump Distance
两个参数就可以实现平面间跳跃,但是如果我们只需要平面间有限条连接路径 可跳跃就需要导航网格连接组件(可以运行时动态生成 )
网格外连接组件(Off Mesh Link)使用:
创建两个空物体作为两个平面连接点,Off Mesh Link
组件随便挂载到场景上的一个物体,将前面两个空物体设置成组件的Start
和End
。
参数:
CostOverride: 权重覆盖
BiDirectional: 开启双向(关闭后只能Start
到End
)
Activated: 是否启用连接点
AutoUpdatePosition: 是否随着Start
到End
更新位置而选择新的路径
导航网格动态障碍物组件 NavMeshObstacle
地形中可以移动或动态销毁的障碍物需要挂载的组件
Carve: 是否开启雕刻功能 固定的开启 移动的不开启
Carve开启:
MoveThreshold:移动阈值(障碍物移动超过该距离,认为是移动状态,更新障碍网格)
Time To Stationary: 当静止时间超过该值认为真正静止了
CarveOnly Stationary: 只有在静止状态才会计算