12345 第1页 | 共5 页下一页
返回列表 发新帖
查看: 37457|回复: 47
打印 上一主题 下一主题

[教程] Unity3d 4.0新动画系统Mecanim用法(二)

[复制链接]

21

主题

7

听众

651

积分

初级设计师

Rank: 3Rank: 3

纳金币
0
精华
3

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2012-12-8 21:23:06 |只看该作者 |倒序浏览
        上一篇,我们初步了解了一下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类里面有很多免费的资源供我们下载学习,但我们得先注册一个账号)。




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




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


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


然后我们单击从idle***n状态的那个箭头。在Inspector面板上我们看到了这个:



我用红线标注了的这部分是我们接下来进行状态转换的关键。这时我们必须借助于Animation Parameters了。新建一个名为Speed的Float的Animation Parameters(上一篇我有介绍)。然后我们在那个红线标注的位置单击下拉条,选中Speed,然后我们发现这部分出现了一点点变化:




第二个下拉选项卡有两个选择项,分别为:Greater与Less。我在第三个选项中填写了0.1,这样做的目的是:如果Speed大于0.1,执行此转换,也就是动画状态从idle切换***n。这一点很重要,主要体现在我们的脚本书写上。
        到此我们的简单的从idle***n的动画控制器就做好了。我们拖拽Solider到Scene视图中,然后将我们刚才制作的Animation Controller多拽到Solider对应的Inspector面板中的Animator的指定的位置上,就像这:



注意:此Animator组件中的Apply Root Motion选项如果我们勾选了的话,当播放动画时是通过动画运动的幅度来改变角色的Transform的,如果我们不勾选,我们就可以用脚本设定此角色的Tranform。这样说或许有点难以理解。放心吧,下面我们会证明这一点的。
        我们还是建一个平面来盛放Solider,并且为Solider加一个角色控制器并适当调节一下胶囊体的大小和位置。
完成之后我们运行一下试试,由于此时我们并没有通过脚本来动态的控制Solider的动画状态的切换,所以Solider会播放默认的动画:idle。截图如下:


我们看到这是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<Animator>();

}

// 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状态:


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

































分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏1 支持支持0 反对反对0
回复

使用道具 举报

Zack    

459

主题

1

听众

5478

积分

高级设计师

Rank: 6Rank: 6

纳金币
5531
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2012-12-8 23:16:27 |只看该作者
我先顶一个,支持楼主的教程!
回复

使用道具 举报

0

主题

1

听众

66

积分

设计初学者

Rank: 1

纳金币
29
精华
0
板凳
发表于 2012-12-9 04:06:49 |只看该作者
功能很强大,要好好学学~~~

对于像楼主这样无私的人,无论如何都要支持!!!!!!!
回复

使用道具 举报

21

主题

7

听众

651

积分

初级设计师

Rank: 3Rank: 3

纳金币
0
精华
3

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2012-12-9 09:40:09 |只看该作者
过奖了,其实我对那些将普通的技术藏着掖着的人非常不满。
回复

使用道具 举报

Zack    

459

主题

1

听众

5478

积分

高级设计师

Rank: 6Rank: 6

纳金币
5531
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

5#
发表于 2012-12-9 12:35:53 |只看该作者
原帖由  wyb314  于 2012-12-09 09:40 发表:

                                                                                         过奖了,其实我对那些将普通的技术藏着掖着的人非常不满。
                                                                               
-----------------------------------------------------
楼主说的很对啊,不过目前这种情况似乎很难改善,很多高手都只是冷眼旁观,看到我们这些新手的问题多是置之不理,我相信这也造成了技术进步的一种阻碍,衷心希望楼主的精神能带动更多人的加入,一起将这个交流圈子壮大起来!
回复

使用道具 举报

21

主题

7

听众

651

积分

初级设计师

Rank: 3Rank: 3

纳金币
0
精华
3

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

6#
发表于 2012-12-9 21:50:02 |只看该作者
这个一定!
回复

使用道具 举报

2722

主题

42

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
38266
精华
111

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

7#
发表于 2012-12-10 01:22:02 |只看该作者
支持楼主无私的技术分享精神,顶一个!
回复

使用道具 举报

2317

主题

54

听众

2万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
20645
精华
62

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

8#
发表于 2012-12-10 13:39:31 |只看该作者
我来支持楼主!
回复

使用道具 举报

2206

主题

2

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
32449
精华
23

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

9#
发表于 2012-12-12 10:33:19 |只看该作者
感谢分享,写得不错啊啊!!
回复

使用道具 举报

25

主题

5

听众

358

积分

设计实习生

Rank: 2

纳金币
300
精华
0

最佳新人

10#
发表于 2012-12-19 14:53:50 |只看该作者
下个4.0试试看!!!看起来还蛮强大的呢  
回复

使用道具 举报

12345 第1页 | 共5 页下一页
返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-4-19 16:47 , Processed in 0.102350 second(s), 37 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部