zoukankan      html  css  js  c++  java
  • Unity Animator动画状态机 深入理解(一)

    接触Unity以来就已经有了Animator,Animation用的少,不过也大概理解他俩之间的一个区别于联系。

    图中其实就是Animator和Animation之间的区别于联系了,啊!你肯定会告诉我这就不是Animator么。

    对啊,Animator其实是由Animation组成的。比如在Animator没有出现的时候有些公司写的动画状态机其实就是代码版的Animator。

    Animator其实就是把Animation统一管理和逻辑状态管理的组件,而Animation就是每一个动画。

    动画状态机推荐游客学院的一篇教程。

    Animator给了我们更方便的图形化状态管理。但是你想不写代码,还是不行。

    但是代码会方便许多,用一个脚本就可以管理整个Animator状态机了~

    其实也是角色执行的逻辑状态机~

    using UnityEngine;
    using System.Collections;
    
    public class AnimatorMove : MonoBehaviour {
    
        public float DirectionDampTime = .25f;
        private Animator animator;
        
        void Start () {
            animator = GetComponent<Animator>();
        }
        
        
        void Update ()
        {
            if (animator == null) return;
    
            AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);
            if (stateInfo.IsName("Base Layer.Run"))
            {
                if (Input.GetButton("Fire1"))
                    animator.SetBool("Jump", true);
            }
            else
                animator.SetBool("Jump", false);
            if (Input.GetButtonDown("Fire2") && animator.layerCount >= 2)
                animator.SetBool("Hi", true);
            else
                animator.SetBool("Hi", false);
            float h = Input.GetAxis("Horizontal");
            float v = Input.GetAxis("Vertical");
            animator.SetFloat("Speed", h * h + v * v);
            animator.SetFloat("Direction", h, DirectionDampTime, Time.deltaTime);
        }
    }

    这是一段比较简单的人物控制脚本,能控制人物的跑跳和打招呼。

    其实就是控制一下过度的条件经过什么的操作是否允许过度。

     

    通过上述的条件来控制动画的过度,那何为动画过度(Transition)呢?

    这就是简单的动画过度控制,在Animator中能比较方便直观的修改。Transition就是所谓的过度

    Settings就能调整过度的时间和衔接。

    Conditions就是所谓的过度条件。

    注意:如果一个动画有Conditions建议取消Has Exit Time,会出现无法及时触发的问题。

    Has Exit Time就是必须过度的时间,处于这个时间时,是不允许任何对动画的操作的。

    以上都是比较基础的Animator操作,后续会写一些关于IK。Blend Tree。二维混合树。同步动画层。多通道IK。等知识。

  • 相关阅读:
    MVC模式-----struts2框架(2)
    MVC模式-----struts2框架
    html的<h>标签
    jsp脚本元素
    LeetCode "Paint House"
    LeetCode "Longest Substring with At Most Two Distinct Characters"
    LeetCode "Graph Valid Tree"
    LeetCode "Shortest Word Distance"
    LeetCode "Verify Preorder Sequence in Binary Search Tree"
    LeetCode "Binary Tree Upside Down"
  • 原文地址:https://www.cnblogs.com/SHOR/p/5735109.html
Copyright © 2011-2022 走看看