Unity动画系统之状态机面板

发表于2018-08-22
评论0 4.2k浏览
状态机,提供了动画状态之间的切换功能、自带动画融合、能编辑动画播放的逻辑顺序、能设置随机播放、能设置行为树。

先来一张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,动画会直接跳到下一个动画播放,也不管当前动画是否播放完毕;

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引