Howteen使用方法
来源:互联网 发布:auglar.js 编辑:程序博客网 时间:2024/04/28 03:37
Hotween与itween类似,也是一个插值插件,都是对位移,缩放,旋转,颜色等数值进行插值,各有各的优势。如果做一般常见的动画建议使用Hotween,但是遗憾的是Hotween不支持路径动画编辑,如果支持就完美了,不过路径编辑自己稍微添加一点代码就可以实现也是非常简单的。
官方网站:http://www.holoville.com/hotween/index.html
根据Hotween官方网站介绍,hotween是运行快,类型安全和面向对象的unity插件,兼容unity所有的脚本语言,并且在官方网站上有和unity对比的demo(http://www.holoville.com/hotween/testRun.html),一般情况下两者性能上的对比不是太明显,但是当游戏对象多的时候hotween的优势就显现出来了.这也是我选择hotween的原因,下面介绍hotween在unity中的使用.
一、安装
首先去http://www.holoville.com/hotween/download.html下载hotween插件,然后把hotween解压到Assets/Plugins目录下(Plugins文件夹需要自己创建),节点结构大致是这样子的;
开始编写代码使用.
首先要在类前面引用hotween的命名空间
using UnityEngine;
using System.Collections;
using Holoville.HOTween;
public class HotweenTest : MonoBehaviour {
// Use thisfor initialization
void Start() {
}
}
二、Hotween的基本使用方法
ok,引入完毕,然后在第一个例子中我会使用Transform对象,但是要记住一点的是hotween只能对物体的任何非静态的公有属性或者字段做动画.
Example1:
/*
//Parame1:要做动画的类,这里我们选择当前物体的变换组件Transform
//Parame2:动画运行时长
//Parame3:参数一的position属性,记住这第三个参数是第一个参数的属性
//Parame4:属性要达到的值,也就是动画做完之后物体的最终坐标
*/
HOTween.To(gameObject.transform, 1,"position", new Vector3(10,20,30));
当然大多数情况下,我们做插值动画这些参数控制是远远不够的,那就需要添加更多的控制参数,
Example2:
HOTween.To(transform,2,newTweenParms().Prop("position",newVector3(10,20,30)).Prop("rotation",new Vector3(0,720,0)).Prop("localScale",newVector3(10,10,10)).Ease(EaseType.EaseInBack).Loops(3,LoopType.Yoyo).Delay(1));
代码看起来很长,不是很好理解,那我们换一种方式:
TweenParms parms = new TweenParms();
parms.Prop("position", newVector3(10,20,30)); //坐标
parms.Prop("rotation", newVector3(0,720,0)); //旋转
parms.Prop("localScale", newVector3(10,10,10)); //缩放
parms.Ease(EaseType.EaseInBack); //加速度类型
parms.Loops(3,LoopType.Yoyo);//设置循环类型为往复循环
parms.Delay(1); //延迟时间
HOTween.To(myGameObject.transform, 2, parms );
这两种写法的动画效果是一模一样的,其中loops方法我觉得是做的比较好的,可以设置循环次数,itween是没有的
三、HOTween Sequence动画队列
有时候我们需要播放一系列的动画,比如说:移动到远点–>旋转180–>放大2倍。。。
这时候就可以考虑使用hotween的队列动画.
Sequence mySequence = new Sequence(newSequenceParms().Loops(3,LoopType.Yoyo));
//在队列后追加动画
mySequence.Append(HOTween.To(myGameObject1.transform, 1,new TweenParms().Prop("position", newVector3(0,0,0)).Ease(EaseType.EaseOutBounce)));
//在队列最前插入
mySequence.Prepend(HOTween.To(myGameObject2.transform, 1,new TweenParms().Prop("position", newVector3(10,20,30)).Prop("rotation", newVector3(0,720,0)).Prop("localScale", newVector3(4,4,4)).Ease(EaseType.EaseInElastic)));
//在1秒后往队列中插入
mySequence.Insert(1, HOTween.To(myGameObject3.transform,1, new TweenParms().Prop("position", newVector3(10,20,30)).Prop("rotation", newVector3(0,720,0)).Prop("localScale", newVector3(4,4,4)).Ease(EaseType.EaseOutQuad)));
//三种播放方式
mySequence.play();//播放或者继续播放(暂停后)
mySequence.PlayForward();//队列中从头往尾播放
mySequence.PlayBackwards();//队列中从尾往头播放
四、回调函数 Call back
不带参数的回调可以这样写:
HOTween.To(transform, 1, newTweenParms().Prop("position", newVector3(10,20,30)).OnComplete(completeCallBack()));
private void completeCallBack() {
// Your code here
}
需要带一个或者多个参数的回调函数:
HOTween.To(transform, 1, newTweenParms().Prop("position", newVector3(10,20,30)).OnComplete(completeCallBack,350,Vector3.one));
private void completeCallBack(TweenEvent e) {
Debug.Log(e.parms[0]);//第一个参数
Debug.Log(e.parms[1]);//第二个参数
Debug.Log(e.tween);//可以得到动画的所有信息
}
五、以speed为计量单位
一般我们使用Hotween开始一个动画,第二个参数是p_duration表示是时长,好想也没有找到如何根据速度来控制动画。最近必须要用到speed,就找了一下,发现可以这样用:
TweenParms parms = new TweenParms();
parms.Prop("position",new Vector3(100,200,50));
parms.SpeedBased(true);
HOTween.To(FurnacePanel,5,parms);
当在代码中设置SpeedBased为true之后,第二个参数就以速度来表示了,值越大自然运动的越快.
六、路径动画
纠正一下这篇文章的错误,Hotween是支持按照路径移动的,下面一个简单的例子
Vector3[] points = new Vector3[3];
points[0] = new Vector3(-10,10,0);
points[1] = Vector3.zero;
points[2] = Vector3.one;
TweenParms parms = new TweenParms();
parms.Prop("position",newPlugVector3Path(points,PathType.Curved).OrientToPath());
walkTweener = HOTween.To(mTrans,moveSpeed,parms);
注意上面代码中的PlugVector3Path对象,hotween是用插件的形式来表示,参数中填入坐标数组表示路经点
OrientToPath:在运动过程中是否会始终朝向下一个路经点
LockPosition:锁定轴向,会固定某一个轴不动
LookAt:始终朝向某一个物体,传递一个Transform对象
当然连续的动作也不只有路径,下面还有很多:
// new PlugInt 连续改变一个int值
// new PlugQuaternion 连续改变旋转
// new PlugSetColor 连续改变颜色
// new PlugSetFloat 连续改变浮点型值
// new PlugString(); 连续字符串
只更改某一个轴向
// new PlugVector3X
// new PlugVector3Y
// new PlugVector3Z
现在看来,用程序做动画hotween必然是首选。
七、刷新类型 – UpdateType
hotween是可以设置以何种形式来刷新每一帧的.
UpdateType.FixedUpdate 固定帧刷新
UpdateType.LateUpdate 每一帧结束之后刷新
UpdateType.TimeScaleIndependentUpdate 忽略系统的Time.timeScale属性单独刷新(这种情况下是不受系统Time.timeScale影响的)
UpdateType.Update 按照帧率刷新
- Howteen使用方法
- Howteen使用方法
- 使用方法
- CSDNBlog使用方法
- 游标使用方法
- Sappy使用方法
- NetSH使用方法
- 一般使用方法
- sp_addlinkedserver使用方法
- shutdown使用方法
- 缓存使用方法
- want使用方法
- log4j使用方法
- log4j使用方法
- adostoreproc使用方法
- vi 使用方法
- Velocity 使用方法
- Regsvr32使用方法
- 第11周项目6.4.3 输出1000以内所有回文素数
- 【读后感】Netty 系列之 Netty 高性能之道 - 相比 Mina 如何 ?
- Howto: Linux Add User To Group
- c/c++: 多线程编程基础讲解(三)
- UNITY 3D 下拉列表的设置(popup list)
- Howteen使用方法
- MySQL性能调优my.cnf详解
- 使用msfpayload生成shellcode
- c/c++: 多线程编程基础讲解(四)
- Java日期时间(Date/Time)(附Date.java源码)
- mysql数据库自增id用法大全_MySQL
- c/c++: 多线程编程基础讲解(五)
- c/c++: 多线程编程基础讲解(六)
- TRACKER : error TRK0005: Failed to locate: "CL.exe". 系统找不到指定的文件。