facebook twitter hatena line email

Unity/Csharp/iTween

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

iTweenとは

オブジェクトを簡単い移動させるライブラリ

インストール

https://assetstore.unity.com/packages/tools/animation/itween-84

AssetStoreからDownload

  1. unity/windows/assetStoreからiTween検索
  2. iTweenをimportする

csにimportの記述は特にしなくてよい。

数秒間で座標移動する

例:mcオブジェクト

GameObject gameObject = transform.Find ("mc").gameObject;
iTween.MoveTo(gameObject, new Vector3(2f, 2f, 0), 2.0f);

gameObjectが現在いる場所から2, 2へ移動する

iTween.Hashで上記と同じことをやる

iTween.MoveTo (gameObject, iTween.Hash ("x", 2, "y", 2, "time", 2));

等速で移動

iTween.MoveTo (gameObject, iTween.Hash ("x", 2, "y", 2, "time", 2, "EaseType", iTween.EaseType.linear));

数秒後に数秒間移動する

iTween.MoveTo (gameObject, iTween.Hash ("x", 2, "delay", 2, "time", 3));

拡大

iTween.ScaleTo (gameObject, iTween.Hash ("x", 4, "y", 2, "time", 1f, "delay", 1f, "easeType", iTween.EaseType.easeOutBack));

等倍に拡大。ダイアログとかの、ポップアップとかに使える?

iTween.ScaleTo(confirmPanel, iTween.Hash("x", 1, "y", 1, "time", 0.1f, "easeType", iTween.EaseType.easeOutBack));

回転

iTween.RotateAdd(obj, iTween.Hash("easeType", iTween.EaseType.linear, "z", 360.0f, "time", 100f, "loopType", iTween.LoopType.loop));

ループ

iTween.MoveTo (gameObject, iTween.Hash ("x", 2, "time", 3, "loopType", "loop"));

往復

iTween.MoveTo (gameObject, iTween.Hash ("x", 2, "time", 3, "loopType", "pingpong"));

点滅ループ

iTween.ColorTo(gameObject, iTween.Hash("r" ,0.7f, "g" ,0.7f, "b" ,0.7f, "time", 0.5f, "loopType", "pingpong"));

点滅っぽいループ(透明版)

iTween.ColorTo(gameObject, iTween.Hash("a", 0.5f, "time", 1.0, "loopType", "pingpong"));

完了イベント追加

iTween.MoveTo (gameObject, iTween.Hash ("x", 2, "y", 2, "time", 2,
			"oncomplete", "OncompleteHandler", 
			"oncompletetarget", gameObject));
void OncompleteHandler() {
	Debug.Log ("OncompleteHandler");
}

oncompletetargetを指定するgameObjectは第一引数のgameObjectではなく、 oncompleteで指定したメソッドが存在するGameObjectを指定する。

以下で代用もできる。

Invoke("OncompleteHandler", 2f);

震えるアクション

iTween.ShakePosition(this.gameObject, iTween.Hash("x", 0f, "y", -4f, "z", 0f, "time", 0.2f));

星形

Vector3[] movepath = new Vector3[6];
movepath[0].Set(0f, 1f, 0f); // 1
movepath[1].Set(0.5878f, -0.8090f, 0f); // 5
movepath[2].Set(-0.9511f, 0.3090f, 0f); // 9
movepath[3].Set(0.9511f, 0.3090f, 0f); // 3
movepath[4].Set(-0.5878f, -0.8090f, 0f); // 7
movepath[5].Set(0f, 1f, 0f); // 1
// 星型頂点 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10137274530
iTween.MoveTo(obj,iTween.Hash("path",movepath,"time",4, "easetype",iTween.EaseType.linear, "loopType", "pingpong"));

値をtweenで変更する

gameObjectが2つあるが、そこは、合わせる。

void Start()
{
        Hashtable hash = new Hashtable(){
            {"from", 2f},
            {"to", 0f},
            {"time", 1f},
            {"easeType",iTween.EaseType.easeOutCubic},
            {"onupdate", "OnUpdateValue"},
            {"onupdatetarget", gameObject},
        };
        iTween.ValueTo(gameObject, hash);
}
void OnUpdateValue(float value)
{
        Debug.Log("value=" + value);
}

アニメーションを途中でやめる

iTween.Stop(gameObj);

直後のMoveToなどを使うと、動作しないので、Invokeなどで0.01fなど遅らせて実行すればよい。 https://gomafrontier.com/unity/225

ローカル座標を指定

isLocalをtrueへ

iTween.MoveTo(obj, iTween.Hash("x",  20f, "y", 15f, "time", 2f, "isLocal", true));

参考:http://halcyonsystemblog.jp/blog-entry-103.html

参考

項目詳細:http://madnesslabo.net/utage/?page_id=1791

項目図:http://www.inkfood.com/wordprez/wp-content/uploads/easingFunctions.png