找回密码
 立即注册
查看: 277|回复: 0

[特效Shader] Unity Animator动画状态机

[复制链接]
发表于 2023-8-18 19:09 | 显示全部楼层 |阅读模式
资源信息 Tutorial Information
教程名称: Unity Animator动画状态机(发帖教程)
适用引擎: Unity3D  (适用引擎,为空默认为Unity)
教程语种: 中文
教程等级: 2
教程格式: 图文(请用IE9以上浏览器访问本版块)
教程作者: 转载自互联网 (如有问题请短消息联系作者或发表回复)
下载地址: 请先登录 (兑换积分)
点击查看原图
美丽分割线
Unity Animator动画状态机

Unity Animator动画状态机 - 走看看

Unity Animator动画状态机
一个角色一般会拥有若干不同的状态,需要在不同的条件下播放不同的状态动画(执行动作),还需要控制动画的播放速度、播放时间等。在Unity中使用动画状态机(Animator)来将动画状态以流程图的网格化形式可视化,可以通过它来实现角色动画状态的播放以及切换。
Animator窗口
创建、查看和修改Animator Controller文件。

右边部分:网格化布局区域
Entry:状态机入口
Exit:状态机出口
AnyState:任意状态
State:
​ 橙色:默认状态,进入状态机时默认连接该动画
​ 灰色:一般状态,可以由任意状态进入该状态
左边部分:状态机的动画层和参数
动画层:使用动画层同时控制角色不同部位或不同功能的状态
点击右侧设置按钮打开设置窗口
Weight:权重(0~1),1为正常播放
Mask:此层上使用的遮罩,可以限制动画的播放部位,例如只要播放上半身的动画,可以使用一个遮罩定义在上半身播放动画。
Blending:
​ override:忽略其他层的信息
​ Additive:在先前层上添加动画
Sync & Timing:用于动画同步
​ Sync:勾选并选择要同步的层,随后状态机的结构便会与之相同,但状态使用的实际动画剪辑不同。在同步层视图中对状态机的布局或结构所做的任何更改(添加/删除状态或过渡)都是针对同步层的源进行的。
​ Timing:同步层上的动画的长度拉伸到与原始层上的一致,如果选中该选项,则动画长度将在两个动画之间平衡(基于权重)。
IK Pass:开启IK控制(可用以控制角色头部注视物体)
可以通过多层动画实现动画的混合
参数:控制或影响状态机流程
¡Int - 整数
¡Float - 浮点数
¡Bool - true 或 false 值(由复选框表示)
¡Trigger - 当被过渡使用时,由控制器重置的布尔值参数(以圆形按钮表示)
动画状态
状态基础
Motion:状态绑定的动画(Animation)
Speed:动画播放的速度 Multiplier:

作为运行时的播放速度
Motion Time:指定参数(float)作为动画播放时间
Mirror:镜像播放 Parameter:指定参数作(bool)为Mirror的开关
Cycle Offset:循环偏移 Parameter:指定参数(float)作为Cycle Offset
Foot IK:脚部IK修正,可解决角色跑动不正常问题
Transition
Solo:只生成当前过渡
Mute:禁用过渡
Has Exit Time:存在退出时间,即上一个状态能否完整结束
Settings:(可通过数值修改,也可以通过图形修改)
Exit Time:退出时间,前一个状态的何时开始过渡、
Fixed Duration:Transition Duration以s为单位 取消勾选:Transition Duration以(前一个状态的)百分数计数,1为100%、
Transition Duration:过渡时间
Transition Offset:过渡偏移,后一个状态从何处开始,值为后一个状态的百分数,1为100%。
nterruption Source:中断源,可以打断状态的过渡、
¡None:不可打断
¡Current State:前一个状态开始的状态过渡可以打断正在进行的状态过渡
¡Ordered Interruption:优先级高于当前过渡才可以打断

如上述状态过渡,当处于A->B过渡时,如果触发A->D条件,过程不会被打断;如果触发A->C条件,A->B立刻被打断转而执行A->B过渡。
¡Next State:从后一个状态开始的状态过渡可以打断正在进行的状态过渡
A->C 和 A->D 将无法打断这个过渡。但是,此时当我们在 A->B 过程中去触发 B->D,State Machine 将立刻开始 A->D 的过渡,并且整个过程不需要完成 A->B 的Transition。
¡Current State Then Next State || Next State Then Current State:决定哪个动画State上的过渡节点优先权更高,前者表示先看前一个State的优先级如果没有被触发,再看后一个State的优先级,后者则相反,来达到不同的融合与打断效果。
Condition:过渡条件,可从参数中选择
¡int / float :可选择Greater(>)、Less(<)、Equals(==)、NotEqual(!=)指定的数作为过渡条件
¡bool:可选择指定值(true or false)作为过渡条件
¡Trigger:条件为true时触发状态过渡
可以通过脚本来修改参数的值来触发响应的的状态过渡。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-4-27 18:51 , Processed in 0.945446 second(s), 34 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表