100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Unity Animator动画状态机 深入理解(一)

Unity Animator动画状态机 深入理解(一)

时间:2021-05-03 13:05:05

相关推荐

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);}elseanimator.SetBool("Jump", false);if (Input.GetButtonDown("Fire2") && animator.layerCount >= 2)animator.SetBool("Hi", true);elseanimator.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。等知识。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。