unity3d学习笔记-动画(2.控制动画与Animator Controller)

本文详细介绍了Unity3D中的Animator Controller如何控制动画,包括State Machine状态机的设置,如何创建Default State,Make Transition创建过渡,Parameters参数的配置,特别是PlayerProximity触发器的应用。此外,还提及了 Animator Controller在共享和多角色动画控制中的应用,展示了其随机选择空闲动画的能力。

一、探索Animator Controller动画控制器

每当为选定的游戏对象创建第一个动画剪辑时,就会自动创建动画器组件。Animator负责分配动画;但是,它不控制实际的动画剪辑。这个任务落到了动画控制器身上,它也是用第一个动画剪辑自动创建的。 

1.State Machine状态机

动画控制器运行在一种称为状态机的特殊系统上。状态机跟踪对象可以执行的所有可能操作,并根据当前情况(或状态)要求选择适当的操作。传达当前状态的逻辑由外部控制,通常通过脚本进行,但从一个动作移动到另一个动作的过程由状态机直接处理,称为转换。

2.设置默认图层

1. 在网格化的 Animator 工作区中,右键单击并选择Create State > Empty。

2.选择新状态节点,在 Inspector 中,将名称从 New State 0 更改为 Closed。

3. 右键单击​​ Closed 状态并选择 Set as Layer Default State。

Closed 状态将变为橙色,并通过橙色线连接到 Entry 节点,表示转换。入口节点代表状态机开始时应该发生的事情。它会在场景播放后自动运行,以及在使用Exit 节点时自动运行

3.Make Transition创建过渡

右键单击​​ Closed 节点,然后选择 Make Transition;选择 Door_Open 节点。过渡箭头将附加到节点。动画控制器将通过 Closed 节点运行一次。完成后,它将立即过渡到 Door_Open 动画,然后在动画结束时处于空闲状态。为了防止一个节点立即转换到另一个节点,必须在转换上放置某种逻辑门。这是您将使用的脚本将在最终版本中检查的内容。这将通过使用参数来完成

4.设置Parameters参数

1.选择参数选项卡以访问当前为空的参数列表。

2.在参数列表的顶部,单击+并选择触发器。

一旦通过脚本调用触发器参数,它就会立即转换。

3. 将触发器命名为 PlayerProximity,注意拼写和大小写与此处所写的完全相同。后面会在脚本中引用。

4.单击白色箭头,选择 Closed 和 Door_Open 之间的转换。在检查器中,找到条件部分。

5. 选择条件列表底部的+ 。由于它是唯一的参数,因此 PlayerProximity 将自动填充到列表中。

5.Any State节点

Any State 节点可以中断状态机中的任何转换,并调用与之关联的任何动画。

二、共享控制器

它们都共享同一个 Animator Controller,您可能会注意到它们的动画效果不同。这是因为 Animator Controller 有三个空闲动画,它会随机选择。每个角色都有自己的动画控制器实例(换句话说,各个角色都有自己的控制器副本,而不是所有角色都使用完全相同的控制器),这意味着为空闲选择的随机动画可能会有所不同!

 override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        animator.SetInteger("IdleSelect", Random.Range(1, 4));
    }

Control animation with an Animator - Unity Learn

Import animation - Unity Learn

待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值