学习了unity3d开发之后,现在来看一下unity3d中简单的2d动画制作,这是一位初学者分享的Unity3D制作2D动画的经验。
Unity3D制作2D动画方法也有多种:
1、动画帧序列作为常见的方法,相信很多开发者都会用。与cocos2d一样,Unity中也可以使用动画帧使你的角色动起来。示例代码:
using UnityEngine;
using System.Collections;
public class AnimateDemo : MonoBehaviour {
public Texture[] frames;
public float framesPerSecond=10;
private int index;
private float dTime=0;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
AnimaOne();
AnimaAlways();
}
void AnimaAlways(){
int nowIndex=(int)(Time.time *framesPerSecond) % frames.Length;
if(index!=nowIndex){
index = nowIndex;
renderer.material.mainTexture = frames[index];
}
}
void AnimaOne(){
dTime+=Time.deltaTime;
if(dTime>1/framesPerSecond){
dTime-=1/framesPerSecond;
renderer.material.mainTexture = frames[++index];
if(index+1>=frames.Length){
}
}
}
}
这里代码很详细,没有执行过,到时动画帧按照这种思路可以轻松实现。AnimaOne方法可以在动画最后一帧的时候实现其他控制;AnimaAlways方法则一直循环播放动画。
2、动画渲染有些情况动画帧太多或者太浪费资源,我们就把动画做在一张图片上,控制相机或者材质渲染图片的位置。个人认为这种方法比较适合数据,Tag的动态显示。
例如:
public Texture imgTexture; //申明一张图片
Vector2 scaleVec2=new Vector2(0.1f,1);// 控制好渲染的图片的区域
renderer.material.mainTexture= imgTexture;// 动画的渲染实现
renderer.sharedMaterial.SetTextureScale("_MainTex", scaleVec2);
3、上面介绍了简单的动画效果,其实在游戏中,我们经常要使游戏里的角色们动起来,位移,旋转,等等。在Unity中,没有刚体的Object的位移和旋转都是通过Transform属性来控制的。transform下有position和rotation属性,且Unity提供了普通旋转和位移的方法。最常用的就是通过坐标增量来控制Object的动作。这里比较难缠的一点就是相对位移和绝对位移。所以在做object移动的时候要格外小心,是相对世界坐标还是其parent的坐标。
其次iTween是做2D动画比较常用的插件。其官网和其他博客对方法的使用有比较详细的介绍。这里叙述一点,就是关于iTween.Hash().iTween提供了hash表,使得简单的动画更加自然和多样。hash的参数根据iTween不同的方法而稍有差异。
比较常用的:
x,y,z,表示目标Vectore3的量;
time,时间;
easeType,过渡方式,平滑,直线,或者其他;
incomplete,当前iTween动画结束调用的动作或这方法;等等。
作为一个Unity3D的初学者,总结一下最近的工作,作为分享吧。一起学习还是在Unity的论坛和高手的博客上慢慢研究。最后祝各位看官工作顺利!谢谢!