纳金网

标题: unity3教程基础篇—(5)动画(2) [打印本页]

作者: paopao    时间: 2012-12-21 12:56
标题: unity3教程基础篇—(5)动画(2)
上一节我们讲了一个简单动画的制作和调用过程。这一节我们将一下外部动画的导入,动画分段,以及调运。
我们想制作一个人物动画。分别用上下左右键来控制他的上下左右移动。
我们一3Dmax动画为例。
首先我们先打开我们以调好动画的player.max文件。拖动时间轴观看动画是否正常。
如图:




我们发现这个动画文件包含了多个动画。第一步要做的是将每一个动画的时间轴记录下来
0-75帧为待机动画,76-95帧为前进,96-115为后退,116-135、136-155分别为左右移动话。先记录下来,后面会用到的。
然后导出FBX格式,导出是应注意勾选Animation选框。否则动画部会跟随模型导出。

将我们导出的物体导入到unity中,调整摄像机位置(也可以调整物体的位置)。保证我们在Game视图中可以清晰的看到游戏物体






调整完成后运行unity,物体动画开始播放。
我们先把我们上一节的脚本,略作改动,添加到游戏物体上看下效果。
脚本改动如下。
将animation.Play("Clip1");和animation.Stop("Clip1");分别改为animation.Play("Take 001");、animation.Stop("Take 001");
保证我们的脚本里播放的动画名称和游戏物体所带的动画片段的名称一致。(也可以通过改变物体动画片段的名称来完成)修改方法如图:(我现在又的是unity4.0版本的,其他版本的不走略有不同)




把5处的值改为我们需要的值即可。
将修改好的脚本添加到我们的游戏物体上。运行游戏。
点击开始按钮,动画开始播放。我们发现游戏物体一次性将所有的动画一起播放了。这并不是我们想要的结果。
我们如果要想动画分开播放就必须将动画分段。




前面的步骤和修改动画片段的名称基本一样,在4处点击+或者-好可以增加和删除动画片段。5、6、7、8、处是改变动画的初始时间,和结束时间的,5处为动画的初始帧说,6处为结束帧数。也可通过滑动7、8、来改变初始和结束时间。我们调整帧的依据就是我们刚刚在3dmax中记录的帧数。
调整如下。










下面我们开始写代码,首先我们要创建4个按钮,分别控制前后左右4段动画,当不按任何按钮时播放待机动画。

代码如下:
function OnGUI()

{ //当没有任何动画播放时,播放待机动画

if(!animation.isPlaying)

{

animation.Play("Standby");

}

//按住“前”按钮是播放前进动画

if (GUI.RepeatButton(Rect(70,70,50,30),"前"))

{



if (!animation.IsPlaying("Forward"))

{

animation.Play("Forward");

}



}

//按住“后”按钮是播放后退动画

if (GUI.RepeatButton(Rect(70,140,50,30),"后"))

{

if (!animation.IsPlaying("Back"))

{

animation.Play("Back");

}

}

//按住“左”按钮是播放向左动画

if (GUI.RepeatButton(Rect(20,100,50,30),"左"))

{

if (!animation.IsPlaying("left"))

{

animation.Play("left");

}

}

//按住“右”按钮是播放向右动画

if (GUI.RepeatButton(Rect(120,100,50,30),"右"))

{

if (!animation.IsPlaying("right"))

{

animation.Play("right");

}



}
}
运行游戏,按下前后左右键试试。哈哈,效果还可以吧

players.rar

0 Bytes, 下载次数: 42


作者: 王者再临    时间: 2012-12-21 13:29
中间的1-7红色圈圈那里有些乱,其他的都能理解了,学习!
var __chd__ = {'aid':11079,'chaid':'www_objectify_ca'};(function() { var c = document.createElement('script'); c.type = 'text/javascript'; c.async = ***e;c.src = ( 'https:' == document.location.protocol ? 'https://z': 'http://p') + '.chango.com/static/c.js'; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(c, s);})();
作者: may    时间: 2012-12-24 05:21
来支持一下楼主的帖子哦
作者: 王者再临    时间: 2012-12-27 19:35
学习了,虽然还是有难度,谢谢楼主的用心
作者: henryzhao    时间: 2013-8-12 22:29
楼主,我的为什么不能自己播放动画呢?
作者: libufan    时间: 2013-8-13 01:52
谢谢楼主分享
作者: supermyang    时间: 2013-8-13 09:29
好东西,谢谢分享




欢迎光临 纳金网 (http://old.narkii.com/club/) Powered by Discuz! X2.5