在unity的制作过程中,怎么让一个物体按照我想要的方式懂起来。一般有两种方式,


1:用代码控制。就像第二节中最后写的那段代码一样。我们按W、A、S、D、物体做前后左右运动。(

当然一些简单的运动这样是可以完成的。但是一些复杂的运动只用代码来编辑就会非常非常麻烦了,比如你个人往前奔跑或者打斗。这样我们就需要动画来完成了。


2:用代码和动画想结合的方式。我们首先就来一下在unity中的动画是怎么制作和添加到物体上的.然后再了解一下怎么又代码来控制他的播放.


unity中的动画一般有两种方式的到,(1)用unity提供的动画系统制作动画(2)在3维软件中制作动画,然后导入到unity中。


我们先来看第一种方式:首先,我们在unity中创建一个物体,给它加上材质,如图:


unity 2d 动画播放 unity动画视频_unity3d


点击工具栏中的Window->Animation


如图:


unity 2d 动画播放 unity动画视频_unity3d_02



弹出如下对话框,我们下面的工作主要在这里面完成了


unity 2d 动画播放 unity动画视频_unity 2d 动画播放_03



1:为层级视图中选择的游戏对象。


2:为被选择的游戏对象的动画属性的列表。在这个列表上排列着所有关联到这个游戏对象的组件(Components)和材质(Materials)。


3:为时间轴。


下面我们开始创建一个新的动画剪辑


点击4的位置


unity 2d 动画播放 unity动画视频_关键帧_04


点击【Create New Clip】.


填写动画片段名称,我们命名为Clip1.


unity 2d 动画播放 unity动画视频_animation_05


我们发现在Inspector视图中多出一列Animation组件


unity 2d 动画播放 unity动画视频_动画_06








然后点击Positoin后面的下拉按钮选择Add Curves(添加动画曲线)


unity 2d 动画播放 unity动画视频_关键帧_07



得到如图所示结果:


unity 2d 动画播放 unity动画视频_unity 2d 动画播放_08





我们现在想做的动画是让它沿着X轴的正方向进行移动。


首先我们选择Position.x.在时间轴上选择一个时间点我们选择(0:40.0)然后在两条线的相交处,单击右键


unity 2d 动画播放 unity动画视频_关键帧_09





点击Add Key添加关键帧。然后选择关键帧向上拖动。


unity 2d 动画播放 unity动画视频_unity 2d 动画播放_10


或者改变动画视图中Position.x的值,也可以调整Inspector视图或者scene视图中x的值



unity 2d 动画播放 unity动画视频_动画_11


unity 2d 动画播放 unity动画视频_unity 2d 动画播放_12




我们将Position.x的值改为1.


unity 2d 动画播放 unity动画视频_动画_13



然后点击播放按钮,在Game是图中看下效果如何。


我们发现在Game视图中。动画播放一次就停止了。要想让他连续播放。我们现在Project视图中找到我们制作的Clip1选中它。然后在Inspector视图中点击Wrap Mode后的下拉菜单。选择Loop,这样就可以循环播放了。


unity 2d 动画播放 unity动画视频_unity 2d 动画播放_14



这样一个动画就制作完成了。当然你自己也可以试一下其他组件的动画。都非常有意思的。


下面我们来看下怎么来控制这个动画的播放可停止。


我们通过一个简单的案例来介绍一下。


我们先建两个按钮一个开始,一个停止。点击开始按钮是动画开始播放,点击停止时停止播放。


首先第一步我们要把物体Animation组件下的Play Automatcally选框勾掉。不要让他开始就播放。


unity 2d 动画播放 unity动画视频_animation_15


然后我们新建一个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为我们的动画片段的名称。