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。等知识。

  • 相关阅读:
    在spring MVC的controller中获取ServletConfig
    支付宝移动接入报系统繁忙,參数错误等错误
    Android:控件WebView显示网页
    android WebView总结
    关于用WebView或手机浏览器打开连接问题
    Android解决Fragment多层嵌套时onActivityResult无法正确回调的问题
    Fragment嵌套Fragment时遇到的那些坑
    Android 多个Fragment嵌套导致的三大BUG
    Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理
    Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复
  • 原文地址:https://www.cnblogs.com/SHOR/p/5735109.html
Copyright © 2011-2022 走看看