纳金网
标题:
unity3教程基础篇—(4)动画(1)
[打印本页]
作者:
paopao
时间:
2012-12-20 11:26
标题:
unity3教程基础篇—(4)动画(1)
在unity的制作过程中,怎么让一个物体按照我想要的方式懂起来。一般有两种方式,
1:用代码控制。就像第二节中最后写的那段代码一样。我们按W、A、S、D、物体做前后左右运动。(http://www.narkii.com/club/bbs_273109.shtml)当然一些简单的运动这样是可以完成的。但是一些复杂的运动只用代码来编辑就会非常非常麻烦了,比如你个人往前奔跑或者打斗。这样我们就需要动画来完成了。
2:用代码和动画想结合的方式。我们首先就来一下在unity中的动画是怎么制作和添加到物体上的.然后再了解一下怎么又代码来控制他的播放.
unity中的动画一般有两种方式的到,(1)用unity提供的动画系统制作动画(2)在3维软件中制作动画,然后导入到unity中。
我们先来看第一种方式:首先,我们在unity中创建一个物体,给它加上材质,如图:
点击工具栏中的Window->Animation
如图:
弹出如下对话框,我们下面的工作主要在这里面完成了
1:为层级视图中选择的游戏对象。
2:为被选择的游戏对象的动画属性的列表。在这个列表上排列着所有关联到这个游戏对象的组件(Components)和材质(Materials)。
3:为时间轴。
下面我们开始创建一个新的动画剪辑
点击4的位置
点击【Create New Clip】.
填写动画片段名称,我们命名为Clip1.
我们发现在Inspector视图中多出一列Animation组件
然后点击Positoin后面的下拉按钮选择Add Curves(添加动画曲线)
得到如图所示结果:
我们现在想做的动画是让它沿着X轴的正方向进行移动。
首先我们选择Position.x.在时间轴上选择一个时间点我们选择(0:40.0)然后在两条线的相交处,单击右键
点击Add Key添加关键帧。然后选择关键帧向上拖动。
或者改变动画视图中Position.x的值,也可以调整Inspector视图或者scene视图中x的值
我们将Position.x的值改为1.
然后点击播放按钮,在Game是图中看下效果如何。
我们发现在Game视图中。动画播放一次就停止了。要想让他连续播放。我们现在Project视图中找到我们制作的Clip1选中它。然后在Inspector视图中点击Wrap Mode后的下拉菜单。选择Loop,这样就可以循环播放了。
这样一个动画就制作完成了。当然你自己也可以试一下其他组件的动画。都非常有意思的。
下面我们来看下怎么来控制这个动画的播放可停止。
我们通过一个简单的案例来介绍一下。
我们先建两个按钮一个开始,一个停止。点击开始按钮是动画开始播放,点击停止时停止播放。
首先第一步我们要把物体Animation组件下的Play Automatcally选框勾掉。不要让他开始就播放。
然后我们新建一个JS脚本,命名为(Clip One)
编辑代码如下:
function OnGUI()
{
//创建第一个按钮“开始”
if (GUI.Button(Rect(10,70,50,30),"开始"))
{
//当按钮点击时播放动画
animation.Play("Clip1");
}
//创建第二个按钮“停止”
if (GUI.Button(Rect(70,70,50,30),"停止"))
{
//当按钮点击时停止动画
animation.Stop("Clip1");
}
}
将脚本添加到我们的物体上面,运行游戏。
animation.Play("Clip1");播放动画命令Clip1为我们的动画片段的名称。
下一节我们将以一个人物为例讲解怎么从外部导入动画,并且在unity中控制。
作者:
Zack
时间:
2012-12-20 19:09
顶一个,支持楼主!!
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);})();
作者:
Zack
时间:
2012-12-20 19:35
所以这个脚本用在导入的动作上也是一样吧?
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);})();
作者:
王者再临
时间:
2012-12-20 22:58
这个教程介绍的很不错,对于初学者有很大的帮助,谢谢!!
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);})();
作者:
奇
时间:
2012-12-21 09:25
支持,多谢分享,看看有啥更新…
作者:
艾西格亚
时间:
2012-12-23 19:30
支持一个,希望继续发表精彩的教程
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);})();
作者:
王者再临
时间:
2012-12-24 00:28
学习了,谢谢楼主的教程!
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 04:37
来支持一下楼主的帖子哦
作者:
may
时间:
2012-12-24 04:38
来支持一下楼主的帖子哦
作者:
王者再临
时间:
2012-12-27 20:25
学习了,虽然还是有难度,谢谢楼主的用心
欢迎光临 纳金网 (http://go.narkii.com/club/)
Powered by Discuz! X2.5