Unity中动画状态机的使用

一、Animator组件的添加

在需要实现动画效果的物体上搜索Animator组件并添加

二、动画器的编辑

右键项目创建一个Animator

打开动画器并进行编辑,将已经导入或者已经创建的动画拖拽进动画器

灰色的板块是拖拽进来的动画片段,Any State表示的是任何状态,从Any State到其他动画的过渡或者是其他动画到Any State的过渡状态会应用到所有状态中。Entry表示的是物体进行创建时的状态入口,黄色的板块表示默认所采用的动画状态。可以通过右键其他的动画状态来切换默认状态。在左边的参数一栏里点加号来创造一个可以供你进行创造动画的参数,可以为int,bool,trigger类型。

在Unity的动画状态机中,Trigger是一种特殊类型的参数,用于触发特定的动画过渡。与布尔参数不同,Trigger参数在被设置为true后,会在触发一次过渡后自动重置为false。这使得Trigger非常适合用来处理一次性事件,例如攻击、跳跃或开门等动作。

要实现不同的动画间的切换,可以通过创建过渡的方法,

点击创建过渡后将箭头拖动到你想要过渡到的动画即可。需要注意的是,在Any State中向其他状态过渡时,需要将其中的可以过渡到自己取消勾选,不然的话会产生重复调用同一个动画的初始部分的情况。在condition里添加进行这个过渡所需要的条件,如move equal 0表示只在move这个int类型的参数被设置为true时会产生这个过渡。创建多个condition时需要同时满足才能发生过渡。

三、在脚本中控制动画

在物体的脚本里可以通过控制参数的值来控制不同动画间的切换效果。

  • 获取Animator组件

    private Animator animator; void Start() { animator = GetComponent<Animator>(); }

    Start方法中,通过GetComponent<Animator>()获取当前物体上的Animator组件。

  • 设置float参数

    if (Input.GetKeyDown(KeyCode.UpArrow)) { animator.SetFloat("Speed", 1.0f); } if (Input.GetKeyDown(KeyCode.DownArrow)) { animator.SetFloat("Speed", 0.0f); }

    使用SetFloat方法设置名为“Speed”的float参数。

  • 设置int参数

    if (Input.GetKeyDown(KeyCode.LeftArrow)) { animator.SetInteger("Direction", -1); } if (Input.GetKeyDown(KeyCode.RightArrow)) { animator.SetInteger("Direction", 1); }

    使用SetInteger方法设置名为“Direction”的int参数。

  • 设置bool参数

    if (Input.GetKeyDown(KeyCode.Space)) { animator.SetBool("IsJumping", true); } else if (Input.GetKeyUp(KeyCode.Space)) { animator.SetBool("IsJumping", false); }

    使用SetBool方法设置名为“IsJumping”的bool参数。

  • 设置trigger参数

     
    if (Input.GetKeyDown(KeyCode.T)) { animator.SetTrigger("Attack"); }

    使用SetTrigger方法触发名为“Attack”的trigger参数。

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值