unity动画插件Hotween的使用 – unity3d游戏开发
来源:互联网 发布:淘宝网英雄联盟代练 编辑:程序博客网 时间:2024/05/16 17:47
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的命名空间
1
using
UnityEngine;
2
using
System.Collections;
3
using
Holoville.HOTween;
4
public
class
HotweenTest : MonoBehaviour {
5
// Use this for initialization
6
void
Start () {
7
}
8
}
二、Hotween的基本使用方法
ok,引入完毕,然后在第一个例子中我会使用Transform对象,但是要记住一点的是hotween只能对物体的任何非静态的公有属性或者字段做动画.
Example1:
1
/*
2
//Parame1:要做动画的类,这里我们选择当前物体的变换组件Transform
3
//Parame2:动画运行时长
4
//Parame3:参数一的position属性,记住这第三个参数是第一个参数的属性
5
//Parame4:属性要达到的值,也就是动画做完之后物体的最终坐标
6
*/
7
HOTween.To(gameObject.transform, 1,
"position"
,
new
Vector3(10,20,30));
当然大多数情况下,我们做插值动画这些参数控制是远远不够的,那就需要添加更多的控制参数,
Example2:
1
HOTween.To(transform,2,
new
TweenParms().Prop(
"position"
,
new
Vector3(10,20,30)).Prop(
"rotation"
,
new
Vector3(0,720,0)).Prop(
"localScale"
,
new
Vector3(10,10,10)).Ease(EaseType.EaseInBack).Loops(3,LoopType.Yoyo).Delay(1));
代码看起来很长,不是很好理解,那我们换一种方式:
1
TweenParms parms =
new
TweenParms();
2
parms.Prop(
"position"
,
new
Vector3(10,20,30));
//坐标
3
parms.Prop(
"rotation"
,
new
Vector3(0,720,0));
//旋转
4
parms.Prop(
"localScale"
,
new
Vector3(10,10,10));
//缩放
5
parms.Ease(EaseType.EaseInBack);
//加速度类型
6
parms.Loops(3,LoopType.Yoyo);
//设置循环类型为往复循环
7
parms.Delay(1);
//延迟时间
8
HOTween.To(myGameObject.transform, 2, parms );
这两种写法的动画效果是一模一样的,其中loops方法我觉得是做的比较好的,可以设置循环次数,itween是没有的
三、HOTween Sequence 动画队列
有时候我们需要播放一系列的动画,比如说:移动到远点–>旋转180–>放大2倍。。。
这时候就可以考虑使用hotween的队列动画.
01
Sequence mySequence =
new
Sequence(
new
SequenceParms().Loops(3,LoopType.Yoyo));
02
03
//在队列后追加动画
04
mySequence.Append(HOTween.To(myGameObject1.transform, 1,
new
TweenParms().Prop(
"position"
,
new
Vector3(0,0,0)).Ease(EaseType.EaseOutBounce)));
05
06
//在队列最前插入
07
mySequence.Prepend(HOTween.To(myGameObject2.transform, 1,
new
TweenParms().Prop(
"position"
,
new
Vector3(10,20,30)).Prop(
"rotation"
,
new
Vector3(0,720,0)).Prop(
"localScale"
,
new
Vector3(4,4,4)).Ease(EaseType.EaseInElastic)));
08
09
//在1秒后往队列中插入
10
mySequence.Insert(1, HOTween.To(myGameObject3.transform, 1,
new
TweenParms().Prop(
"position"
,
new
Vector3(10,20,30)).Prop(
"rotation"
,
new
Vector3(0,720,0)).Prop(
"localScale"
,
new
Vector3(4,4,4)).Ease(EaseType.EaseOutQuad)));
11
12
//三种播放方式
13
mySequence.play();
//播放或者继续播放(暂停后)
14
mySequence.PlayForward();
//队列中从头往尾播放
15
mySequence.PlayBackwards();
//队列中从尾往头播放
四、回调函数 Call back
不带参数的回调可以这样写:
1
HOTween.To(transform, 1,
new
TweenParms().Prop(
"position"
,
new
Vector3(10,20,30)).OnComplete(completeCallBack()));
2
3
private
void
completeCallBack() {
4
// Your code here
5
}
需要带一个或者多个参数的回调函数:
1
HOTween.To(transform, 1,
new
TweenParms().Prop(
"position"
,
new
Vector3(10,20,30)).OnComplete(completeCallBack,350,Vector3.one));
2
3
private
void
completeCallBack(TweenEvent e) {
4
Debug.Log(e.parms[0]);
//第一个参数
5
Debug.Log(e.parms[1]);
//第二个参数
6
Debug.Log(e.tween);
//可以得到动画的所有信息
7
}
五、以speed为计量单位
一般我们使用Hotween开始一个动画,第二个参数是p_duration表示是时长,好想也没有找到如何根据速度来控制动画。 最近必须要用到speed,就找了一下,发现可以这样用:
1
TweenParms parms =
new
TweenParms();
2
parms.Prop(
"position"
,
new
Vector3(100,200,50));
3
parms.SpeedBased(
true
);
4
5
HOTween.To(FurnacePanel,5,parms);
- unity动画插件Hotween的使用 – unity3d游戏开发
- Unity使用Hotween动画插件遇到的坑
- unity开发android插件(unity调用android代码) – unity3d游戏开发
- unity中SendMessage的bug – unity3d游戏开发
- Unity3D游戏开发之MMD For Unity插件研究
- HOTween使用出现的问题
- Unity 动画插件 DOTween 的简单使用
- unity中使用box2d物理引擎一 – unity3d游戏开发
- android+unity3D游戏开发之动画的播放
- Unity3D游戏开发之GUI的使用
- Unity3D游戏开发之Unity3D动画与Mecanim动画系统
- Unity3D游戏开发之Unity3D动画与Mecanim动画系统
- unity HOTween简单应用
- unity3D游戏开发一之初识unity
- unity3D游戏开发一之初识unity
- Unity3D游戏开发之Unity打包APK
- unity3D游戏开发一之初识unity
- Unity3D游戏开发之使用Mecanim动画系统控制2D动画
- hdu4619 Warm up 2 二分图 最大匹配
- nginx 常用配置详解(持续更新)
- presentModalViewController和dismissModalViewControllerAnimated的替代方法
- Android调用Camera API拍照遇到的问题和解决方法
- ThinkPHP 查询语言
- unity动画插件Hotween的使用 – unity3d游戏开发
- C语言联合体 union
- Struts2:类型转换之批量封装Set集合类型的属性
- LeetCode - Reverse Nodes in k-Group
- 在javaweb中使用log4j
- make: *** [out/target/common/obj/APPS/Deskdate_intermediates/classes-full-debug.jar] 错误 41
- 重载 hashCode()
- Latex字体设置
- HDU 4499 Cannon