Unity动画系统之状态机面板
发表于2018-08-22
状态机,提供了动画状态之间的切换功能、自带动画融合、能编辑动画播放的逻辑顺序、能设置随机播放、能设置行为树。
先来一张animator状态机面板图:
Motion为对应的动画剪辑;speed就是动画播放的速度;normalized Time…这个不太清楚什么意思,有知道的兄dei告知一下。mirror就是将动画镜像,这个东东在某些时候还是非常有用的;cycle offset 就是 起始动画的开始时间点,列如0.5表示动画启动时从动画中间段开始播放;foot IK 脚部IK修正,如果模型动画的脚有问题,可以试下勾上这个看看;write defaults默认勾选,貌似不勾选也对动画没啥影响……;parameter勾选上,表示对应的属性可以用脚本加以控制;
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Material : MonoBehaviour { Animator warriorAnimator; bool isChanged; // Use this for initialization void Start () { warriorAnimator = GameObject.FindGameObjectWithTag("Player").GetComponent<Animator>(); } // Update is called once per frame void Update () { if (Input.GetKeyDown(KeyCode.A)) { isChanged = !isChanged; if (isChanged) { warriorAnimator.SetBool("isMirror", true); } else { warriorAnimator.SetBool("isMirror",false); } } if (Input.GetKeyDown(KeyCode.B)) { warriorAnimator.SetFloat("floatL",0.5f); } } }
has exit time 两个作用:1:在动画过度没有conditions的情况下,勾选has exit time ,可以让动画播放正常过渡,但是若没有勾选has exit time ,则动画无法过渡;2:在动画过度有conditions的情况下,勾选has exit time,当满足conditions,动画会先播放完当前动画然后再过度到下一个动画。如果没有勾选has exit time ,当满足conditions,动画会直接跳到下一个动画播放,也不管当前动画是否播放完毕;