どうも。またまた専門学校界の旅キチ(自称)です。
今回は、unityでアニメーションを扱う上で革命的なアセットである、
DOTweenを紹介したいと思います。
#DOTweenとは
DOTweenとは、unityでのアニメーションをサポートしてくれるアセットである。
従来、オブジェクトのアニメーションを行うには、毎フレーム実行される関数の中で、経過時間と連動させて行うというのが一般的であった。
例えば、あるオブジェクトを1秒掛けてX方向に座標値にして10移動したい場合があったとする。
従来では、このように記述された。
/* このスクリプトは動かすオブジェクトにアタッチされているとする */
int count = 0;
void update()
{
// unityは毎秒30フレームで動作している
if(count < 30)
{
Vector3 pos = transform.localposition;
// Time.deltaTimeには前フレームからの経過時間が格納されている
pos.x += 10.0f * Time.deltaTime;
transform.localposition = pos;
count++;
}
}
このように、オブジェクトと動かすために、経過時間等も管理する必要があった。
何より、移動が終われば用が無いにも関わらず毎フレームupdate関数が呼ばれるのも無駄が多い。
これを解決してくれるのがDOTweenである。
DOTweenを利用して先ほどの処理を記述すると、このようになる。
using DG.Tweening;
// この関数はアニメーションを実行する際に1回だけ呼ばれればいい
public void Trigger()
{
transform.DOLocalMove(new Vector3(10, 0, 0), 1.0f);
}
…たったの1行?そう、たったの1行である。
DOTweenならば内部で時間管理も自動的に行ってくれるので、こちら側で指定するのは、基本的に
transform.DO~~~(変更後のパラメータ, アニメーション時間);
という指定だけでよい。
この他にも便利なものは多数あるが、そちらの紹介は既に多数紹介されている方々に任せる。
最後に、こちらのDOTweenのダウンロードはこちら。
https://www.assetstore.unity3d.com/jp/#!/content/27676
アセットの活用で、良いunityライフを。