Chinar堅持將簡單的生活方式,帶給世人! (擁有更好的閱讀體驗 —— 高分辨率用戶請根據需求調整網頁縮放比例) |
1
Introduce —— 基本介紹
iTween 官網—— iTween官方文檔介紹(英文薄弱,可以用“360極速瀏覽器”自帶的谷歌翻譯功能)
推薦看下官方文檔的介紹,里邊的提供了鍵值對的解釋。結合 Hash() 函數,往里邊填值即可
幾乎所有 iTween 提供函數用法,都需傳入對象,和一個哈希表。
而 iTween 提供了一個 Hash() 函數,不用實例化哈希表,往里邊一個一個Add鍵值對。直接Hash()函數里加入需要的鍵值對,來達到我們想要的效果
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 類型
是不同的 貝賽爾曲線 函數 :實現不同的過渡效果
這里都不一一列舉,如果需要測試自己想要的效果,而又不知道該使用哪個函數。
可以看下網絡大神提供的網站勢力,一目了然↓
3
Hashtable Usage —— 哈希表的用法
Hash() —— 哈希函數中的鍵值對順序隨意,但 鍵 必須按照官方要求去寫,是固定的
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 —— 在自身的基礎上,做增量移動
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 歡迎你的加入
本博客為非營利性個人原創,除部分有明確署名的作品外,所刊登的所有作品的著作權均為本人所擁有,本人保留所有法定權利。違者必究
對於需要復制、轉載、鏈接和傳播博客文章或內容的,請及時和本博主進行聯系,留言,Email: ichinar@icloud.com
對於經本博主明確授權和許可使用文章及內容的,使用時請注明文章或內容出處並注明網址