unity之avatar的animator组件中如果没有avatar会怎么样

任何具有 Avatar 的游戏对象 (GameObject) 也具有动画器组件该组件是角色与其行为之间的链接。

动画器组件引用动画器控制器 (Animator Controller)该控制器用于对角色设置行为。这包括要从脚本控制的状态機 (State Machine)、混合树 (Blend Tree)和事件的设置

附加到此角色的动画器控制器
应从动画本身还是从脚本控制角色的位置。
动画是否应与物理交互
渲染器不可見时,仅对根运动进行动画处理当角色不可见时,所有其他身体部位保持静态

可以从 动画器控制器(Animator Controller) 视图【菜单: 】查看和设置角色行為。

进行状态机设置之后可以在层次结构视图 (Hierarchy View) 中将控制器置于具有 Avatar 的任何角色的动画器组件上。

  • 可以对多个动画进行整合;
  • 使用狀态机来实现动画的播放和切换;
  • 可以实现动画融合和分层播放;
  • 可以通过脚本来对动画播放进行深度控制;

下面我们通过一个图来直观嘚看看动画的组成结构:

Animator组件用来控制人物动画的播放其中需要的两个最核心的内容就是控制动画播放逻辑的Animator Controller以及动画骨骼Avatar对象。

我们需要播放动画的角色都需要添加Animator组件该组件即为我们控制动画的接口,下面我们来看看Animator组件:

  • Avatar:使用的骨骼文件
  • Apply Root Motion:绑定该组件的GameObject的位置是否可以由动画进行改变(如果存在改变位移的动画)。
  • Culling Mode:剔除模式:Always Animate表示即使摄像机看不见也要进行动画播放的更新Cull Update Transform表示摄像机看鈈见时停止动画播放但是位置会继续更新,Cull Completely表示摄像机看不见时停止动画的所有更新

下方还会显示我们的动画的一些主要信息。

我们在祐键创建资源时还会发现这样的一个资源该资源的意思是基于某个Animator Controller进行每个状态的动画的修改,其他设置不变可以方便的复用我们已經创建好的Animator Controller。

首先我们发现的是3个默认的状态,这些状态是unity之avatar自动帮我们创建的同时也无法删除:

  • Entry:表示当进入当前状态机时的入口該状态连接的状态会成为进入状态机后的第一个状态;
  • Any State:表示任意的状态,其作用是其指向的状态是在任意时刻都可以切换过去的状态;
  • Exit:表示退出当前的状态机如果有任意状态指向该出口,表示可以从指定状态退出当前的状态机;

1.我们可以通过右键菜单进行创建:

2.或者峩们可以通过把一个Animation Clip拖拽到状态机窗口中进行创建;

我们发现我们创建的第一个状态被设置为默认的第一个状态第一个状态会被标记为黃色,如下:

我们可以通过Inspector窗口进行该状态的设置上篇笔记有详细的解说。

我们可以使用这两种方法来创建多个状态同时配置好每个狀态,如下:

我们的状态机已经有了状态但是还没有指定每个状态之间的关系,下面我们来看看该如何指定状态之间的关系

在Mecanim中,动畫之间的播放不再是通过调用诸如“Play”之类的方法进行切换了而是通过判断参数的变换来进行状态即动画的切换。

我们打开Parameters面板这里被用来设置状态机使用到的各种参数,如下:

点击加号可以创建一个参数在unity之avatar中允许我们创建4种类型的参数:

Float:float类型的参数,多用于控淛状态机内部的浮点型参数;

Int:int类型的参数多用于控制状态机内部的整型参数;

Bool:bool类型参数,多用于状态切换;

Trigger:本质上也是一个bool类型嘚参数但是其值默认为false,且设置为true后系统会自动将其还原为false;

下面我们创建两个简单的Bool类型的变量如下:

我们希望,当Walk为true时人物走动为false时人物站立,Run也是一致只不过会过渡到跑动。

下面我们通过右击状态的菜单可以拉出一条状态转换的线条表示当前状态转换到目標状态。

我们点击线条可以在Inspector窗口设定转换的条件如下:

我们在条件框设置Walk为true,表示当Walk被设置为true时就从站立跳转到走路动画同样的,赱路回到站立也需要一条转换的线条不过Walk要设置为false:

我们发现线条中有一个勾选项Has Exit Time,那么它是什么意思呢

如果我们勾选了该项,在动畫转换时会等待当前动画播放完毕才会转换到下一个动画如果当前动画是循环动画会等待本次播放完毕时转换,所以对于需要立即转换動画的情况时记得要取消勾选

还有一种情况时,当我当前的动画播放完毕后就自动转换到箭头所指的下一个状态(没有其他跳转条件)此时必须勾选该选项,否则动画播放完毕后就会卡在最后一帧如果是循环动画就会一直循环播放。

我们在绑定了Animator组件的GameObject之上添加下面嘚新脚本组件就可以实现通过按键来切换人物播放的动画了:


本文提供全流程中文翻译。

Chinar 的初衷是将一种简单的生活方式带给世人

使有限时间 具备无限可能

Chinar —— 心分享、心创新!

助力快速完成 Animator 动画的添加与控制

为初学者节省宝贵嘚时间避免采坑!



全文高清图片,点击即可放大观看 (很多人竟然不知道)

unity之avatar 中为我们提供了而全面的动画设计解决方案用来完成游戏对潒的动态效果的控制和创建

我们想要一个人物模型动起来,非常简单

只需要在人物的游戏对象上添加 Animator 组件


需要自己创建空状态并进行相應设置


创建一个状态后,我们需要给该状态改名(为了区分状态)并指定一个动作 Motion

这里我创建的是 站立,所以就需要找到对应的 Idel 动画指定給 Motion

相同流程创建跑步动作:


由于丧尸这个游戏对象,具备跑和站立 2 个状态/动作 Motion

我们需要的是点击鼠标它就开始移动,保持跑起来的状态

赱到目的地它就停下,保持站立状态

所以这里 站立——跑状态是需要切换的,如上图我们可以简单的建立连接

那么我们需要添加一個 bool 参数,并设置对应条件来使2个状态可以进行切换

添加完成后,我们就可以通过代码来控制人物的站立和跑 2个状态了


完成上边所有设置,即可通过代码控制 动画状态的切换

调用 Animator 中的函数,通过设置 bool 值即可改变 游戏对象的 动画状态


May Be —— 开发者,总有一天要做的事!


拥有自巳的服务器无需再找攻略

Chinar 提供一站式《零》基础教程

使有限时间 具备无限可能!




本博客为非营利性个人原创,除部分有明确署名的作品外所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利违者必究

对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系留言,Email:

对于经本博主明确授权和许可使用文章及内容的使用时请注明文章或内容出处并注明网址

我要回帖

更多关于 unity之avatar 的文章

 

随机推荐