iTween的用法總結


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 賦值:青色球體的位置
    }
}

這里寫圖片描述


支持

May Be —— 搞開發,總有一天要做的事!


擁有自己的服務器,無需再找攻略!

Chinar 提供一站式教程,閉眼式創建!

為新手節省寶貴時間,避免采坑!


先點擊領取 —— 阿里全產品優惠券 (享受最低優惠)


1 —— 雲服務器超全購買流程 (新手必備!)

2 —— 阿里ECS雲服務器自定義配置 - 購買教程(新手必備!)

3—— Windows 服務器配置、運行、建站一條龍 !

4 —— Linux 服務器配置、運行、建站一條龍 !





技術交流群:806091680 ! Chinar 歡迎你的加入


END

本博客為非營利性個人原創,除部分有明確署名的作品外,所刊登的所有作品的著作權均為本人所擁有,本人保留所有法定權利。違者必究

對於需要復制、轉載、鏈接和傳播博客文章或內容的,請及時和本博主進行聯系,留言,Email: ichinar@icloud.com

對於經本博主明確授權和許可使用文章及內容的,使用時請注明文章或內容出處並注明網址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM