资讯详情

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

一、探索Animator Controller动画控制器

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

1.State Machine状态机

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

2.设置默认图层

在网格化的 Animator 在工作区,右键单击并选择>

在 Inspector 中,名字从 New State 0 更改为 Closed。

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

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

3.Make Transition创建过渡

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

4.设置Parameters参数

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

单击参数列表顶部并选择触发器

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

命名触发器 PlayerProximity,注意拼写和大小写和这里写的完全一样。后面会在脚本中引用。

单击白色箭头,选择 Closed 和 Door_Open 两者之间的转换。在检查器中条件。

选择条件列表底部因为它是唯一的参数,所以 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

待续。。。

标签: 控制器连接器组件

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台