Unity3d 4.0新动画系统Mecanim用法(二)

上一篇,我们初步了解了一下Mecanim的部分很基础的类容,我以一个疑问的形式结尾。这次我来揭晓此问题的答案,其实很简单,上次的警告如下:
4.0新动画系统Mecanim用法(二)">

警告的大概意思是:用在Animator Controller中的Animation clips需要有在检视面板中被设置了Muscle(肌肉)的这个步骤。

我的英文很烂,但我可以知道这句话的含义,就是我们的用到的这个Animation Clip必须是已经产生了Avatar的模型中的Animation

Clip。由于我们当前只将第一个Robot生成了Avatar,所以现在我们必须将每个Robot都来一次Rigging,也就是让每个Robot的FBX文件中产生Avatar。这让人觉得难以接受,但如果我们的Robot的动画导入方式是单个文件分割的方式的话就很简单了。我后来想了想,现在我们介绍一下Mecanim的核心功能->动画重定向应该足够合适了。那好吧!我们开始吧!

首先我们先进入AssetStore中下一个东西:Mecanim Animation Starter Pack(注意,AssetStore类里面有很多免费的资源供我们下载学习,但我们得先注册一个账号)。

4.0新动画系统Mecanim用法(二)">
4.0新动画系统Mecanim用法(二)">
这个包可是一个伟大的包,我们接下来的例子将会充分用到它。注意:AssetStore上下载的包的源文件并不在Unity的安装目录下,一般的地址为:C:UsersAdministratorAppDataRoamingUnityAsset Store。为了让我们更能理解Mecanim动画系统的强大功能,我们还得下载一个模型Soldier,当然,也是在AssetStore中:
4.0新动画系统Mecanim用法(二)">4.0新动画系统Mecanim用法(二)">

注意,此Solider中是不带任何动画文件的,但Mecanim可以通过动画重定向来让Solider动起来。下面我们新建一个工程,取名为:Mecanim2。然后将我们下载好的两个包都导进来。按照上一篇所讲的,我们先生成Solider的Avatar(上面这两个包包含两个FBX文件,一个是Solider,另一个是swat)。然后新建一个AnimationController,名为Solider1。

随后我们先看看我们导入的那些带有Avatar的动画的FBX文件,如下:
4.0新动画系统Mecanim用法(二)">

我们还是新建两个动画状态:idle***n。这回,我们试着将那些个带有Avatar的动画片段中寻找两个有关idle***n的动画片段分别拖到两个动画状态对应的Motion上,这次我们发现可以拖到个位置去了。果然印证了我在开篇提出的那个结论。

我们接下来在两个动画状态之间建立动画转换(Animation Transitions)。如下图:

4.0新动画系统Mecanim用法(二)">
然后我们单击从idle***n状态的那个箭头。在Inspector面板上我们看到了这个:
4.0新动画系统Mecanim用法(二)">
我用红线标注了的这部分是我们接下来进行状态转换的关键。这时我们必须借助于Animation Parameters了。新建一个名为Speed的Float的Animation Parameters(上一篇我有介绍)。然后我们在那个红线标注的位置单击下拉条,选中Speed,然后我们发现这部分出现了一点点变化:
4.0新动画系统Mecanim用法(二)">

第二个下拉选项卡有两个选择项,分别为:Greater与Less。我在第三个选项中填写了0.1,这样做的目的是:如果Speed大于0.1,执行此转换,也就是动画状态从idle切换***n。这一点很重要,主要体现在我们的脚本书写上。

到此我们的简单的从idle***n的动画控制器就做好了。我们拖拽Solider到Scene视图中,然后将我们刚才制作的Animation Controller多拽到Solider对应的Inspector面板中的Animator的指定的位置上,就像这:

4.0新动画系统Mecanim用法(二)">

注意:此Animator组件中的Apply Root Motion选项如果我们勾选了的话,当播放动画时是通过动画运动的幅度来改变角色的Transform的,如果我们不勾选,我们就可以用脚本设定此角色的Tranform。这样说或许有点难以理解。放心吧,下面我们会证明这一点的。

我们还是建一个平面来盛放Solider,并且为Solider加一个角色控制器并适当调节一下胶囊体的大小和位置。

完成之后我们运行一下试试,由于此时我们并没有通过脚本来动态的控制Solider的动画状态的切换,所以Solider会播放默认的动画:idle。截图如下:
4.0新动画系统Mecanim用法(二)">

我们看到这是Solider站立了一会,而且转动了一个方向并摆了一个poss。我们终于让一个没带任何Animation Clips的角色动了起来。这就是Mecanim的强大的动画重定向功能,他能将一个角色的动画附加到另一个角色身上,这是在以前版本的Unity中从没出现过的。有了这种功能,美术就可以极大地减轻工作量。但是我们的好戏还没完呢!我们必须通过脚本来实现动画状体的切换。于是,我们得新建一个脚本,取名为:FirstMecanimScript。

我简单的写几句代码如下:

using UnityEngine;

using System.Collections;

public class FirstMecnimScript : MonoBehaviour {

private Animator animator;

private float v;

// Use this for initialization

void Start () {

animator = gameObject.GetComponent();

}

// Update is called once per frame

void Update () {

v = Input.GetAxis("Vertical");

if(animator)

{

animator.SetFloat("Speed",v);

}

}

}

代码异常简单,也就是说如果我们按下竖直方向键时,当偏移量大于0.1(我们定义的Speed的临界点为0.1)时,动化状态马上从idle转换***n状态:
4.0新动画系统Mecanim用法(二)">

功能确实达到了,但是还得注意一点,就是我之前强调的,如果在Animator中我们勾选了Apply Root Motion,我们不必修改角色的Transform,依靠角色的动作本身的设计就能改变角色的Transform。但是如果我们没有勾选它,那我们就只能依靠程序来动态的改变其Transform,就像老式的动画系统一样。好了,这个问题读者可以亲自去检验一下。这次我们怎么也体会到Mecanim的动画重定向功能的强大了,可我们还没有结束呢!接下来我们还有IK,动画混合树等类容需要我们去探寻。因此,我的下一篇文章,敬请期待!

时间: 2024-12-16 13:09:50

Unity3d 4.0新动画系统Mecanim用法(二)的相关文章

Unity 4.0 中的新动画系统——MecAnim

分享一个文档资料,关于动画系统的,版本应该很老了,但是有借鉴意义的: Unity 4.0 已于 2012 年 11 月 15 日正式发布,Unity 每一次版本的提升,都给游戏开发者带来惊喜,这一次也不例外,该版本最大变化之一就是引入了新动画系统--MecAnim,通过 MecAnim 新的动画系统,开发者在 Unity 中可以非常方便地实现角色动画.所以 Unity 4.0 的启动画面都突出了新的动画系统这一最新功能  . 这里需要说明的是,在 Unity 4.0 中,开发者还是可以使用原有的

[Unity3D]Unity4全新的动画系统Mecanim

Unity4.X添加一个新的动画系统,以取代原有的3.X旧的动画系统,全新的动画系统Mecanim是官方推荐,它使我们能够写更少的代码实现连续动画. 效果图 Unity3.X中动画系统播放动画 使用播放play()或淡入淡出播放CrossFade() 比如: animation.Play("name"); animation.CrossFade("name"); 也能够做成队列动画.然后播放,比如: animation.PlayQueued("name&q

Unity3D 4.0新功能:Mecanim教程

作为Unity4.0的主要更新功能,Mecanim动画被寄予了很多的期望.系统有先进的地方,也有不足的地方.这些我们留到最后再来总结. 阿赵粗略的学习了一下,写下以下的教程.这篇教程简单的说明了Mecanim系统的用法和控制方式,里面用到的资源,是从AssetStore里面下载的,如果有兴趣的朋友可以去狗刨学习网免费下载. 学习目标: 我预先准备了几个没有带动画的3d模型,fbx格式,然后一些导出好的动画文件. 我们要做的事情,就是使用新的动画系统,把这些动画做出状态机,赋予给这些没有动画的模型

[Unity3D]Unity4新的动画系统Mecanim

Unity4.X中添加的新的动画系统取代了原来3.X的旧的动画系统,新动画系统Mecanim也是官方推荐的,使得我们写较少的代码来实现连续的动画效果. 效果图 Unity3.X中动画系统播放动画 使用播放play()或淡入淡出播放CrossFade() 例如: animation.Play("name"); animation.CrossFade("name"); 也可以做成队列动画,然后播放,例如: animation.PlayQueued("name&

[原]Unity3D深入浅出 - 新版动画系统(Mecanim)

Mecanim概述: Mecanim是Unity提供第一个丰富而复杂的动画系统,提供了: 针对人形角色的简易的工作流和动画创建能力 Retargeting(运动重定向)功能,即把动画从一个角色模型应用到另一个角色模型上的能力. 针对Animations Clips(动画片段)的简易工作流,针对动画片段及他们之间的过度和交互预览能力. 一个用于管理动画间复杂交互作用的可视化窗口. 通过不同逻辑来控制不同身体部位的运动能力. Mecanim工作流: 1.资源导入,这一阶段由美术师或动画师通过三维工具

Unity3D之Mecanim动画系统

Mecanim动画系统 Mecanim Animation System Date:2013-05-16 07:48 Unity has a rich and sophisticated animation system called Mecanim. Mecanim provides: Unity有一个丰富并且精密的动画系统叫做Mecanim.Mecanim提供了: Easy workflow and setup of animations on humanoid characters. 为类

解决Unity3d 4.3 动画系统带来的烦恼

近期有非常多同学问我关于unity3d 4.3更新之后动画系统和曾经不一样了,并且之前用的非常熟练的创建动画和修修改画非常多操作都不好用了,那么在这里和大家分享一下三杀的个人经验,方便大家使用unity3d 4.3的动画系统. 首先,我们要明白知道的一点是Unity3d 是逐步的将老的动画系统删除,取而代之的是新的动画系统叫做Mecanim.所以就会出现变来变去,越变越不好用的情况,只是等到Unity3d把旧版动画系统全然删除的时候,一个崭新的动画系统就会展如今我们眼前,期待是这样吧. (下面内

Unity3d 动画系统

Unity3d学习笔记 本篇简单介绍Unity3d中的动画系统及其使用. 模型导入 以带动画的FBX文件为例,unity版本为5.0以上版本. 新版动画系统 当你导入FBX文件后,会发现模型具有一个Animator(状态机)组件. 我们一般将它成为(新)动画系统,新动画系统和旧版的动画系统(unity3d 4.3之前版本)的区别就在于使用了Animator组件代替了原来的Animation. 旧版动画系统 同理当你使用的是旧版的动画系统就会发现是Animation组件. 在高版本的unity3d

【Unity】第10章 Mecanim动画系统

分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 Unity提供了两种动画系统:一种是早期版本提供的旧版(Legacy)动画系统,旧版本(Legacy)以后将逐步被淘汰掉并在新版中不再支持.另一种是Mecanim动画系统,这是建议使用的新版动画系统. 如果你是初学者,就不要去学旧版(Legacy)动画了,直接学习Mecanim动画系统即可. 二.什么是Mecanim动画系统 Mecanim(肌肉线条)是Unity提供的新版动画系统,Unity计划将工作流完全并入Me