码迷,mamicode.com
首页 > 编程语言 > 详细

【总结】Unity动画模块

时间:2018-02-21 18:14:51      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:order   代码   offset   其他   unit   变量   切换   控制器   意思   

动画模块没有太多好说的,更多是练习积累的经验
 
Animator动画控制器
 
  • AnimatorControllerLayer 状态层,layer层级越高,动作优先级越高
  • AnimatorStateMachine 状态机
  • SubAnimatorStateMachine 子状态机
 
RuntimeAnimatorController 运行时动画状态机
Animate Physics 适合动画有物理的相互作用
ApplyRootMotion 用动画还是脚本控制位置
Culling Mode 动画裁剪
Write Default 将动画改变的数据结束动画后复原
 
Transition
技术分享图片
技术分享图片
  • Transition Offset部分的next State是不会执行的
  • Duration 部分是两个动画的混合。fixed duration 打钩的话 duration会以秒计算,而不是根据state的长度
  • order interrupt  是否只能被高优先级的transition打断?
 
当勾上时,可以选择
ValueFunction
None
這個transition不會被打斷
Current State
目前State的其他transition如果達成條件,會打斷目前的transition
Next State
下一個State的其他transition如果達成條件,會打斷目前的transition
Current State then Next State
都可以打斷,只是由Current State優先
Next State then Current State
都可以打斷,只是由Next State優先
 
意思就是说,勾选后,更高优先级的Transition可以打断当前这个Transition,比如我们要用AnyState到Hurt状态,如果此时正在发生其他状态间的Transition,那么设置None的话就只能等这个Transition结束才能切换到Hurt了。但是用其他选项就可以打断
 
可以用打断实现一些比较特殊的动画,比如硬直结束后可操作的攻击动画
 
Solo 和 Mute 的功能
不用变量控制的状态转移
  • Mute:禁用状态转移(哑掉transition);
  • 如果不选择solo,在没有变量控制(结束条件为“exit time”)的情况下,该状态优先选择动作列表中最前(或者说最上的)的状态转移;
  • 如果选择了某个solo,那么在没有变量控制(结束条件为“exit time”)的情况下,优先选择标记solo的状态转移;
  • 如果有多个状态转移选中了solo,那么优先选择这些已选中solo的状态转移中,在动作列表中靠前的状态转移;
 
基本的原则是,如果一个状态被标记为solo,那么其余的状态转移将被视为选中mute;
如果solo和mute同时被选中,那么mute的优先级更高(即视为只选中了mute)
 
连击的Transiton
问题目标:如combo1,至少播放0.6倍的动画,然后如果有输入就转换状态
判断输入的时间必须要小于exit time,有exitTime时transition的判断发生在exit time结束时,过了exit time就不进行condition判断了
 
Dawnblade中不用exit time,而是交给程序控制,何时可接受输入并切换
 
Blend Tree 动画混合树
1D就是一个参数混合多个动画
2D就是两个参数混合多个动画,一个XY空间中,点距哪个动画近就受其影响大
 
其他
AnimatorStateInfo
Animator.StringToHash
 
Animation帧动画
 
AnimationCurve
AnimationEvent
 
IK:正向运动学,根骨骼带动子节点骨骼运动
FK:反向运动学,由子节点带动父节点运动。
 
在Animator窗口中,对于要使用IK的动画状态勾上Foot IK选项,在Base Layer中勾上IK Pass选项。然后在代码中实现OnAnimatorIK函数来控制IK
 
Animator.SetIKPosition
SetIKRotation
SetIKPositionWeight
SetIKHintPosition
SetLookAtWeight
……
 
动画重定向
同一套Avatar骨骼的不同角色,动画绝对可以重用
 
动态控制动画帧事件
可以用Animator.animationClips获取,然后设置AnimationEvent触发time,functionName
 
AnimatorOverrideController 运行时修改挂载的clip
 
 
 

【总结】Unity动画模块

标签:order   代码   offset   其他   unit   变量   切换   控制器   意思   

原文地址:https://www.cnblogs.com/sols/p/8456962.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!