zoukankan      html  css  js  c++  java
  • 【总结】Unity动画模块

    动画模块没有太多好说的,更多是练习积累的经验
     
    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
     
     
     
  • 相关阅读:
    ZOJ2587 Unique Attack(判定最小割唯一性)
    SPOJ371 Boxes(最小费用最大流)
    SGU185 Two shortest(最小费用最大流/最大流)
    POJ2112 Optimal Milking(最大流)
    HDU3996 Gold Mine(最大权闭合子图)
    POJ3680 Intervals(最小费用最大流)
    SPOJ 7258 Lexicographical Substring Search(后缀自动机)
    HDU 4436 str2int(后缀自动机)
    SPOJ 1812 Longest Common Substring II(后缀自动机)
    CodeForces 235C Cyclical Quest(后缀自动机)
  • 原文地址:https://www.cnblogs.com/sols/p/8456962.html
Copyright © 2011-2022 走看看