Unity iTweenで移動を実装する

今回はUnityで使える「iTween」という機能を紹介します。
 
iTweenをうまく使うことで、思った通りにオブジェクトを動かすことができると思います。

はじめに

 
iTweenを使うと「オブジェクトを○秒かけて○に移動する」というような実装ができます。
移動だけではなく、回転や大きさなども同じようにして動かすことができるので使い勝手が良いですよね。
 
このiTweenはUnityで新規プロジェクトを作成しただけでは実装されていないので、まずは準備が必要になります。
 
今回の動作が分かりやすくなるように動画を作成しました。
先に確認しておくと実装例が分かりやすくなるかもしれません。
 


 

iTweenを用意する

 
iTweenはAssetStoreからインポートすることができます。
AssetStoreを開いて「iTween」と検索してください。
 
UnityアセットのiTween
 
このように開かれるので「インポート」を選択して、導入しましょう。
 
iTweenのインポートウィンドウ
 
サンプルなどは必要ありませんがとりあえずは全て「Import」しておいてください。
このようにAssetをImportするだけでiTweenを使うことができるようになりました。
 
では実際にどのような使い方をすれば、オブジェクトを動かすことができるようになるのか説明していきます。
 

iTweenで動かす

 
まず動かしたいオブジェクトを用意してください。
今回は「移動」「回転」「大きさ」をiTweenで操作してみたいと思います。
 
以下のように用意した「Cube」を動かしてみましょう。
 
Unity オブジェクトの操作画面
 
まずは移動からです。
iTweenを使ってオブジェクトを移動させるときには以下のようなコードを使います。
 

Move

 

using UnityEngine;
using System.Collections;
public class Tween : MonoBehaviour {
  public GameObject obj;
  // Use this for initialization
  void Start () {
  }
  public void MoveRight(){
    iTween.MoveTo (obj, iTween.Hash ("x", obj.transform.position.x+2, "time", 3));
  }
}

 
MoveRightを呼び出すとオブジェクトが「現在のx座標+2」分だけ移動するというようなコードになっています。
このコードを見ると「iTween.Hash」と書かれた箇所があると思います。
 
これはiTweenを使う上で重要になるもので、"x"や"time"というように割り当てることで、どのような動作をするのか指定することができます。
 
“x"はx軸、"time"は移動完了までにかかる時間というような具合ですね。
このように書くと、オブジェクト「obj」の「x」を「3」秒で移動させるコードになります。
 
同じようにして、オブジェクトの大きさを○秒で変更させるコードを書いてみましょう。
 

Scale

 

using UnityEngine;
using System.Collections;
public class Tween : MonoBehaviour {
  public GameObject obj;
  Vector3 scale;
  // Use this for initialization
  void Start () {
    scale = obj.transform.localScale;
  }
 
  public void Scale(){
    iTween.ScaleTo (obj, iTween.Hash ("x", scale.x+1, "y", scale.y+1, "z", scale.z+1, "time", 3));
    scale = obj.transform.localScale;
  }
}

 
先ほどと同じように"x"と"time"がでてきています。
“x"のようにy軸やz軸も指定できるので、1行でxyzの大きさを一度に変更することができました。
 
また、scaleを変更した後で、初期化することによって「Scale( )を呼び出すたびに、1ずつ大きくする」というコードにすることもできます。
 
もちろん、大きさを指定したいときは「scale.x+1」ではなく「1」と書くだけでサイズ変更できます。
最後に回転を変更しましょう。
 

Rotate

 

using UnityEngine;
using System.Collections;
public class Tween : MonoBehaviour {
  public GameObject obj;
  
  // Use this for initialization
  void Start () {
  }
  public void Rotate(){
    iTween.RotateTo (obj, iTween.Hash ("x", 90, "time", 3));
  }
}

 
ここまでくればもうわかりますね。
オブジェクト「obj」の「x軸」を「3秒」で「90°」回転させるというコードになっています。
 
内容はMoveやScaleと同じなので、詳しい解説は必要ないと思います。
では最後にこのコードを呼び出すボタンをを作成していきましょう。
 

コードを呼び出す

 
今回はCanvasのButtonを使って、iTweenの処理を呼び出してみましょう。
まず始めに作成した「Cube」に先ほど作成した「iTween」のコードをアタッチしておいてください。
 
GameObject objにはCubeを指定しておきます。
 
Unity 追加されたiTween Script
 
続いて、CanvasからButtonを作成します。
以下のように作成しましょう。
 
Unity Canvasのオブジェクト
 
これらの作成したButtonがクリックされたら、先ほどのコードを呼び出すようにしてみます。
 
Unity iTweenの実行画面
 
Leftボタンの「On Click( )」に先ほどのコードにある、MoveLeft () を割り当ててください。
このようにするだけで、LeftボタンをクリックしたらMoveLeft ()を呼び出せるようになりました。
 
Unity On Click
 
同じようにして、それぞれのボタンに対応するコードを割り当ててください。
ここまで完了したら、後はPlayモードにしてボタンをクリックしてみるだけです。
 
移動やサイズ変更、回転などが正しく機能していれば成功です。
 

まとめ

 
今回紹介したiTweenはオブジェクトを動かすときに、とても簡単に実装することができると思います。
AからBに一瞬で移動するのではなく、時間をかけて移動するという処理がしたいときはiTweenを使えば簡単に実装できますね。
 

 
ぜひ試してみてください。
ではまた。

おすすめの記事