iTween的基本用法

简介: Unity3D插件-iTween的基本用法本文提供全流程,中文翻译。Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例...

Unity3D插件-iTween的基本用法


本文提供全流程,中文翻译。

Chinar坚持将简单的生活方式,带给世人!

(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例)




1

Introduce —— 基本介绍


iTween 官网—— iTween官方文档介绍(英文薄弱,可以用“360极速浏览器”自带的谷歌翻译功能)


推荐看下官方文档的介绍,里边的提供了键值对的解释。结合 Hash() 函数,往里边填值即可

几乎所有 iTween 提供函数用法,都需传入对象,和一个哈希表。

iTween 提供了一个 Hash() 函数,不用实例化哈希表,往里边一个一个Add键值对。直接Hash()函数里加入需要的键值对,来达到我们想要的效果

这里写图片描述

举个栗子黑白88

iTween 支持的功能:

这里写图片描述

控制音频:AudioFrom、AudioTo、AudioUpdate、Stab

控制相机:CameraFadeAdd、CameraFadeDepth、CameraFadeDestroy、CameraFadeSwap、CameraFadeFrom、CameraFadeTo、CameraTexture

变色控制:ColorFrom、ColorTo、ColorUpdate

绘制相关:DrawLine、DrawLineGizmos、DrawLineHandles、DrawPath、DrawPathGizmos、DrawPathHandles

淡入淡出:FadeFrom、FadeTo、FadeUpdate

视角控制:LookFrom、LookTo、LookUpdate、LookType

移动控制:MoveAdd、MoveBy、MoveFrom、MoveTo、MoveUpdate

路径操作:PutOnPath、PointOnPath

旋转操作:RotateAdd、RotateBy、RotateFrom、RotateTo、RotateUpdate

缩放操作:ScaleAdd、ScaleBy、ScaleFrom、ScaleTo、ScaleUpdate

震动控制:ShakePosition、ShakeRotation、ShakeScale

其他:Count、PathLength、EaseType(动画过度类型)、FloatUpdate、Hash、Init、Pause、Resume、Stop、StopByName、PunchPosition、PunchRotation、PunchScale、RectUpdate、ValueTo、Vector2Update、Vector3Update



2

EaseType —— 缓冲函数


iTween 中定义了许多 EaseType 类型

是不同的 贝赛尔曲线 函数 :实现不同的过渡效果

这里都不一一列举,如果需要测试自己想要的效果,而又不知道该使用哪个函数。

可以看下网络大神提供的网站势力,一目了然↓

举个栗子黑白88

曲线实例图解

球体运动图解
这里写图片描述


3

Hashtable Usage —— 哈希表的用法


Hash() —— 哈希函数中的键值对顺序随意,但 必须按照官方要求去写,是固定的
举个栗子黑白88

using UnityEngine;


/// <summary>
/// 测试iTween——哈希表类
/// </summary>
public class TEST1 : MonoBehaviour
{
    public GameObject      TargetGameObject; //目标物体:添加目标物体到inspector面板中
    public float           Time = 2;         //过渡时间
    public iTween.EaseType ITweenType;       //过渡动画曲线类型:可以外部调节


    /// <summary>
    /// 更新函数
    /// </summary>
    void Update()
    {
        if (Input.GetMouseButtonDown(0)) //如果点击鼠标左键
        {
            //iTween.MoveTo(TargetGameObject, new Vector3(3, 3, 3), Time); //移动(目标物体,目标位置,时间)


            //Hashtable args = new Hashtable();                 //实例化一个哈希表对象
            //args.Add("x",                3);                  //添加x坐标:3
            //args.Add("time",             2);                  //时间为:2秒
            //args.Add("delay",            0.1);                //延时:0.1秒
            //args.Add("oncomplete",       "onupdatefunction"); //动画结束时:回调函数
            //args.Add("oncompletetarget", gameObject);         //调用目标物体,脚本的 完成方法 onpupdatefunction
            //args.Add("looptype",         "pingpong");         //过度动画类型:来回动画(可自己定义,根据iTween提供的贝塞尔曲线函数,来达到想要的效果)
            //iTween.MoveTo(TargetGameObject, args);            //移动物体(目标物体,哈希表)


            //和上边方式一模一样,用iTween的Hash()函数,直接添加即可
            iTween.MoveTo(TargetGameObject,iTween.Hash("looptype", "pingpong", "oncompletetarget", gameObject, "oncomplete", "onupdatefunction", "delay", 0.1,"x", 3, "time", 2, "easetype", ITweenType));
        }


        if (Input.GetMouseButtonDown(1)) //如果点击鼠标右键
        {
            TargetGameObject.transform.position = Vector3.zero; //把物体位置归零
        }
    }


    /// <summary>
    /// 打印数字:名字自定义
    /// </summary>
    private void onupdatefunction()
    {
        print("动画完毕");
    }
}

这里写图片描述


4

Example —— 例子1- - 抛物线运动


这是一个官方的例子,照着写的

MoveTo —— 移动到指定坐标

MoveBY —— 在自身的基础上,做增量移动

举个栗子黑白88

using UnityEngine;


/// <summary>
/// 球体自身挂载的脚本
/// </summary>
public class MySphere : MonoBehaviour
{
    public  Vector3         TargetPos;     //目标位置
    private GameObject      Sphere;        //子物体 圆球的位置
    public  iTween.EaseType ShangEaseType; //上过度动画的类型
    public  iTween.EaseType XiaEaseType;   //下过度动画的类型


    /// <summary>
    /// 初始化方法
    /// </summary>
    void Start()
    {
        Sphere = transform.Find("Sphere").gameObject;                                                                             //找到球体预设物的子物体:Sphere
        iTween.MoveTo(gameObject, iTween.Hash("time", .7,  "position", TargetPos, "easetype", iTween.EaseType.easeOutCubic));     //移动到青色球所在的位置
        iTween.FadeTo(gameObject, iTween.Hash("time", .5,  "delay",    3,         "alpha",    0, "onComplete", "DestroyTarget")); //修改透明度
        iTween.MoveBy(Sphere, iTween.Hash("time",     .35, "y",        5,         "easetype", ShangEaseType));                    //移动球体预设物子物体Sphere 相对位置 y轴 到5:即向上移动
        iTween.MoveBy(Sphere, iTween.Hash("delay",    .35, "time",     .35,       "y",        -5, "easetype", XiaEaseType));      //向下移动,并调用方法
        //MoveBY是在自身的基础上,做增量移动
        //MoveTo是移动到指定坐标
    }


    /// <summary>
    /// 删除物体
    /// </summary>
    private void DestroyTarget()
    {
        Destroy(gameObject); //删除物体
    }
}

using UnityEngine;


/// <summary>
/// 测试脚本——球体运动类,挂在空物体
/// </summary>
public class Test_1 : MonoBehaviour
{
    public GameObject SphereGameObject; //球体预设物
    public Transform  CyanTransform;    //中心球体的位置:青色球体位置


    /// <summary>
    /// 更新函数
    /// </summary>
    void Update()
    {
        RaycastHit hitinfo;                                                        //碰撞对象
        Ray        ray        = Camera.main.ScreenPointToRay(Input.mousePosition); //屏幕点转射线 —— 拿到射线对象
        bool       isCollider = Physics.Raycast(ray, out hitinfo);                 //射线是否照射到碰撞对象: hitinfo —— 返回bool值
        if (isCollider && hitinfo.collider.tag == "Ground")                        //如果照射到,并且对象标签是 “Ground”(标签需要自己设定地面为"Ground")
        {
            CyanTransform.position = hitinfo.point; //移动红色物体的坐标 —— 到被照射的点上
        }
        if (Input.GetMouseButtonDown(0)) //如果点击鼠标左键
        {
            Spawn(); //调用生成方法
        }
    }


    /// <summary>
    ///  生成物体
    /// </summary>
    void Spawn()
    {
        GameObject go                         = (GameObject) Instantiate(SphereGameObject); //实例化物体
        go.GetComponent<MySphere>().TargetPos = CyanTransform.position;                     //给物体身上的脚本中的 目标位置TargetPos 赋值:青色球体的位置
    }
}

这里写图片描述


END

本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究

对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com

对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址

相关文章
|
5月前
|
安全 API Windows
CreateMutex用法
CreateMutex用法
|
12月前
LambdaQueryWrapper用法
LambdaQueryWrapper用法
177 0
/与%,%与/的用法
/与%,%与/的用法
166 0
|
存储 API 索引
CImageList用法介绍
CImageList用法介绍
171 0
${}用法
[el表达式],它会从page,request,session,application中取值。比如:{name}它的意思就从以上4个对象中去名为name的值。
1356 0
EasyTouch基本用法
EasyTouch基本用法 本文提供全流程,中文翻译。Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) ...
1518 0