iTween 备忘。。。

 

 

 

  • 一.iTween 介绍

        iTween是一个动画库,作者创建它的目的就是最小的投入实现最大的产出.让你做开发更轻松,用它可以轻松实现各种动画,晃动,旋转,移动,褪色,上色,控制音频等等



    二.iTween 原理

    iTween的核心是数值插值,简单说就是给iTween两个数值(开始值,结束值),它会自动生成一些中间值,大概像这样子, 开始值-> 中间值 -> 中间值 …. -> 结束值。

    这里的数值可以理解为: 数字,坐标点,角度,物体大小,物体颜色,音量大小 等



    三.iTween 下载:  从官网http://itween.pixelplacement.com下载

    主要文件有两个iTween.cs 和 iTweenPath.unitypackage(编辑路径才需要这个包)



    四.如何将iTween 加入项目: 

        在项目中建立Plugins目录, 然后将下载的iTween.cs放到Plugins目录即可.

    如果需要编辑路径, 使用import package->custom package菜单功能加入iTweenPath.unitypackage



    五.几种效果演示



    六.示例代码:

    1. 物体移动

    iTween.MoveTo(target, iTween.Hash("position", destPos, "easetype", easeType));



    2. 数值过渡

    iTween.ValueTo(gameObject, iTween.Hash(

                         "from", y,

                         "to", toY,

                         "easetype", easeType,

                         "loopType", loopType,

                         "onupdate", "onupdate",

                         "time", tm 

                         ));

    3. 振动

    iTween.ShakePosition(target, Vector3(0, 0.1, 0), 1);



           4. 按路径移动

             var path = GameObject.Find("Plane").GetComponent("iTweenPath").GetPath("myPath");

             iTween.MoveTo(gameObject, iTween.Hash(//"position", Vector3(0, 0, 0), 

                                              "path", path,

                                              "time", 20,

                                              "easetype", "linear"));



    六.路径编辑



    1.       将iTweenPath.cs拖至某个游戏对象上, 这个游戏对象的就会多出如下属性,

    下图表示路径由5个节点组成, 路径名称为myPath





    2. 可以手工填写节点坐标,也可以在场景中调整节点坐标



     

    //**********************************************************************************************//

     

    iTween for Unity补间动画工具


    cam = camera.main.gameObject;
    }
    function Start(){
    // 0 ~ 1.5秒,go绕y轴从90度旋转0度,并从y=3.5移动到y=0的位置
    iTween.rotateFrom(go,{“y”:90, “time”:1.5, “transition”:”easeInExpo”});
    iTween.moveFrom(go,{“y”:3.5, “time”:1.5, “transition”:”easeInExpo”});
    // 1.5 ~ 1.5 + 0.3秒,当前(r, g, b) -> (3, 0.5, 1.2)
    iTween.colorTo(go,{“r”:3, “g”:.5, “b”:1.2, “time”:.3, “delay”:1.5});
    // 1.5 ~ 1.5 + 0.8秒
    iTween.shake(cam,{“y”:.3, “time”:.8, “delay”:1.5});
    // 2.3 ~ 2.3 + 2秒,scaleY: 1 -> 2
    iTween.scaleTo(go,{“y”:2, “time”:2, “delay”:2.3});
    // 4.3 ~ 4.3 + 1秒,绕x轴旋转0.5 * 360度
    iTween.rotateBy(go,{“x”:.5, “delay”:4.3});
    // 4.6 ~ 4.6 + 1秒,从当前位置移动到y=1.2
    iTween.moveTo(go,{“y”:1.2, “delay”:4.6});
    // 5.8 ~ 5.8 + 1秒,从当前位置移动到y=0
    iTween.moveTo(go,{“y”:0, “delay”:5.8, “transition”:”easeInExpo”});
    // 6.8 ~ 6.8 + 0.8秒
    iTween.shake(cam,{“y”:.3, “time”:.8, “delay”:6.8});
    // 7.6 ~ 7.6 + 0.5秒,当前(r, g, b) -> (0.165, 0.498, 0.729)
    iTween.colorTo(go,{“r”:.165, “g”:.498, “b”:.729, “time”:.5, “delay”:7.6});
    // 7.6 ~ 7.6 + 1秒,scaleY: 当前比例 -> 1
    iTween.scaleTo(go,{“y”:1, “delay”:7.6});
    }

    1. private var go : GameObject;
    2. private var cam : GameObject;

    3. function Awake(){
    4. go = gameObject;
    5. cam = camera.main.gameObject;
    6. }

    7. function Start(){
    8. iTween.rotateFrom(go,{"y":90, "time":1.5, "transition":"easeInExpo"});
    9. iTween.moveFrom(go,{"y":3.5, "time":1.5, "transition":"easeInExpo"});
    10. iTween.colorTo(go,{"r":3, "g":.5, "b":1.2, "time":.3, "delay":1.5});
    11. iTween.shake(cam,{"y":.3, "time":.8, "delay":1.5});
    12. iTween.scaleTo(go,{"y":2, "time":2, "delay":2.3});
    13. iTween.rotateBy(go,{"x":.5, "delay":4.3});
    14. iTween.moveTo(go,{"y":1.2, "delay":4.6});
    15. iTween.moveTo(go,{"y":0, "delay":5.8, "transition":"easeInExpo"});
    16. iTween.shake(cam,{"y":.3, "time":.8, "delay":6.8});
    17. iTween.colorTo(go,{"r":.165, "g":.498, "b":.729, "time":.5, "delay":7.6});
    18. iTween.scaleTo(go,{"y":1, "delay":7.6});
    19. }
    复制代码 缓动
    easeIn方法控制补间如何从开始到最高速度
    easeOut方法控制补间减速并停在目标位置
    easeInOut同时控制上述两者
    参数意义可参考Flex中的缓动类
    Back 类可以定义三个缓动函数,以使用 Flex 效果类实现运动。
    Bounce 类可以定义三个缓动函数,以便使用 Flex 效果类实现回弹运动。
    Circular 类可以定义三个缓动函数,以使用 Flex 效果类实现 circular 运动。
    Cubic Cubic 类可以定义三个缓动函数,以便使用 Flex 效果类实现运动。
    Elastic Elastc 类可以定义三个缓动函数,以便使用 Flex 效果类实现运动,其中的运动由按指数方式衰减的正弦波来定义。
    Exponential Exponential 类可以定义三个缓动函数,以便使用 Flex 效果类实现运动,其中的运动由按指数方式衰减的正弦波来定义。
    Linear Linear 类可以定义缓动函数,以便使用 Flex 效果类实现线性运动。
    Quadratic Quadratic 类可以定义三个缓动函数,以使用 Flex 效果类实现 quadratic 运动。
    Quartic Quartic 类可以定义三个缓动函数,以使用 Flex 效果类实现运动。
    Quintic Quintic 类可以定义三个缓动函数,以便使用 Flex 效果类实现运动。
    Sine Sine 类可以定义三个缓动函数,以便使用 Flex 效果类实现运动,其中的运动由正弦波定义。
    var addthis_language = ‘en’;

     

     

     

     

     

     

    iTween是一个动画库,作者创建它的目的就是最小的投入实现最大的产出.让你做开发更轻松,用它可以轻松实现各种动画,晃动,旋转,移动,褪色,上色,控制音频等等.

        iTween的核心是数值的插值.只需要定义开始和结束,中间过程iTween就会帮你弄好,简单易用,作用毫不马虎.

     

        "但是我用xxx可以做这个的"

        每件事情都会有多个方法来实现,Unity里也是,你可以用建模软件做动画,也可以在Unity内部的动画时间线来做,也可以用Js,C#等来做,可是谁不 想更快更容易的完成需要的动画效果呢?iTween就是给你的答案.制造简单不代表产出的东西简单,并且iTween经受了个大游戏工作室的测试考验,高效,快捷,简单,稳定,不试它会后悔的.呵呵.

    "好吧,我决定试试,我怎么开始呢?"

        先从http://itween.pixelplacement.com/下载iTween插件,它由一个c#文件组成,支持Unity所有版本以及不管你用什么编程语言都可以使用它,如果你是用Js,你要将它放在Editor文件夹里,如果是c#,放在项目的Assets里的任意目录即可.好了,你装好它了.

    "Hello World!"

        下面了解一下iTween的基础知识,iTween的所有方法都有2种方式,一种简单的(simple),一种定制的复杂(customizable)的. 在复杂定制方式里可以设置iTween所有属性方法.iTween里的方法几乎都需要赋予一个GameObject,为了获取更大的性能,只有一些特定的 函数可以在Update方法中重复调用,

        iTween可以做很多事情,我们先从简单的学起,先控制一个物体从一个位置移动到另一个地方,这里用到MoveTo()方法.让它两秒后移动到(2,0,0)位置上:

    iTween.MoveTo(gameObject, Vector3(2,0,0), 3);

        上面是不是很简单?我们如果需要对这个动画进行更多的控制,我们需要用"customizable"模式,像下面这样写:

    iTween.MoveTo(gameObject, {“x”:2, “time”:3, “loopType”:”pingPong”, “delay”:1));

        上面的意思就是三秒的时间将物体运动到x坐标为2的位置,运动的类型为"pingPong",延时1秒执行这个运动.

        如果想完全了解iTween所有方法,请查看完整的描述文档:http://itween.pixelplacement.com/documentation.php

    "令人厌恶的哈希表"

        有很多参数更你设置,在C#中.你可能要这样写才可以:

    Hashtable parameters = new Hashtable();

    parameters.Add("x",2);
    parameters.Add("time",3);
    parameters.Add("looptype",iTween.LoopType.pingPong);
    parameters.Add("delay",1);
    iTween.MoveTo(gameObject, parameters);

        在Js中只要一行代码到C#中变成了六行,有点违背了最小投入最大产出的中心思想,但是,不要怕,iTween有一个解决方案,让C#中也可以像JavaScript那样简介,iTween里的hash()方法就可以做到,看下面修改后的代码:

    iTween.MoveTo(gameObject, iTween.Hash(“x”,2,“time”,3,“loopType”,”pingPong”,“delay”,1));

        这样好多了吧.

     

    "所有的东西都免费!"

        iTween会定期更新,其中包括修复错误以及更新例子,完善文档等支持.作者做iTween不知疲倦的工作了约五个月,还要照顾他怀孕的妻子,工作,家庭装修,几乎都不睡觉了.他的目标就是帮助更多的人学习C#.带动所有人互帮互助.

        希望iTween会帮助到更多的人.

     文章转自:blog.1vr.cn

    声明: 本文由( liuxiaoni )原创编译,转载请保留链接:Unity动画库插件iTween介绍

     

     

     

     

     

    理解iTween的回调函数

     

    在使用iTween中遇到的最多的问题恐怕就是回调函数没有被调用了。

    在iTween内部使用的是Unity的SendMessage方法来实现它的三个回调函数:onStart, onUpdate和onComplete。当给一个GameObject添加iTween方法后,iTween会把这个GameObject相关的所有回调都丢给该GameObject。但是在实际的编码中,我们经常遇到这样的问题:调用iTween方法的GameObject并不是需要执行iTween的GameObject。

    以一个例子为例:

    这段代码在运行的时候会发现ShakeComplete方法并没有被调用。原因很简单,iTween把onComplete方法丢到了target GameObject上,而不是UnderstandingCallbacks所在的GameObject上。

    有两种方法来解决这个问题:
    1. 创建一个新的脚本,把它attach到target GameObject上,然后把ShadeComplete函数挪到这个新的脚本里。
    2. 另一种更简单的方法,使用iTween的回调函数target modifiers

    iTween的三个回调函数都还有一个额外的target modifier属性,用来告诉iTween在哪个GameObject上调用回调函数,这三个属性为:onStartTarget, onUpdateTarget和onCompleteTarget

    下面是用这种方法修改过的例子:

    比第一种方法要简单的多,不是吗?
    翻译自 http://pixelplacement.com/2011/02/21/understanding-itween-callbacks/

    原创文章,转载请注明: 转载自All-iPad.net

    本文链接地址: 理解iTween的回调函数


     

     

     

     

     

  • 你可能感兴趣的:(iTween 备忘。。。)