简介
原来以为4.0会有新的UI系统,没想到Unity选择了在模型动画上增加新内容,
就是据说很强大的Mecanim动画系统了,官方的介绍链接:
http://china.unity3d.com/unity/mecanim/
http://docs.unity3d.com/Documentation/Manual/MecanimAnimationSystem.html
一、基本概念
原来看那个宣传视频时真心觉得不错,这两天花了点时间大概了解了下:
现了解一些名词术语之类的东西吧:
http://docs.unity3d.com/Documentation/Manual/AnimationGlossary.html
A Glossary of Animation and Mecanim terms
二、使用
基本的操作,网上已经有人写过一点教程,我就不再花时间去写了。
http://www.narkii.com/club/bbs_271433.shtml
http://www.narkii.com/club/bbs_271638.shtml
看了上面两篇,再加上官方文档,应该就能入门了,至少知道模型应该如何导入,如何制作Avatar出来。
下面我要说一下状态机的使用方式,其实最好是能把官方的DEMO载下来看,收获会很多。
有了动画之后,我们就想着要怎么把他们串起来,比如我如何从走变成跑,又如何变成跳。
Mecanim为我们提供了状态机机制,并提供了可视化编辑窗口。
注意图中的三个红框,
①是设置状态转换的参数,通过脚本来改变设置的值与②中设置的条件对比来判断是否转换状态。
②是状态转换的箭头,在里边设置转换的参考值。
③是一个动作状态,里边设置Motion。
这里可以设置Animation Clip或者是Blend Tree。
选中②的界面:
选中上面的红框,进入下面红框来设置状态转换的条件,如:这里设置的是当Speed参数的值大于0.1的时候进入奔跑模式。
同理可以在回来的箭头上设置当Speed参数小于0.1里进入idle模式。
在代码里控制Speed值:
usingUnityEngine; usingSystem.Collections; publicclassPlayerControl : MonoBehaviour { protectedAnimator m_Animator; GameObject m_PlayerObj; //Use this for initializationvoidStart () { m_Animator = GetComponent<Animator>(); } //Update is called once per framevoidUpdate () { if(m_Animator) { //attack //if (Input.GetButtonDown("Fire1")) //{ //m_Animator.SetBool("Attack1", true); //} //else if (Input.GetButtonUp("Fire1")) //{ //m_Animator.SetBool("Attack1", false); //}floath = Input.GetAxis("Horizontal"); floatv = Input.GetAxis("Vertical"); m_Animator.SetFloat("Speed", h*h+v*v); m_Animator.SetFloat("Direction", h, 0.25f, Time.deltaTime); } } }
最后结果:
其实这里边的跑动,是把官方Demo里的动画重定向到我自己的模型上了,让一个女士跑成这样。。真是丑。。