はじめに
この記事では、実際の使用例をお見せしながらDOTweenアニメーションの中で、多く使われる
- 移動
のやり方について紹介します。
移動アニメーション
transform.DOMove(移動したい位置, アニメーション時間)
(4,0,0)の座標まで3秒かけて移動する例です。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening; // つけ忘れないようにしましょう
public class test : MonoBehaviour
{
private void Start()
{
// (4,0,0)に3秒かけて移動します
this.transform.DOMove(new Vector3(4f, 0f, 0f),3f);
}
}
移動はできましたが、インスペクターで移動させたゲームオブジェクトの座標を見てみると、設定した数値とは異なっています。これは、ワールド座標で指定したためです。
ワールド座標とローカル座標の違い
- ワールド座標・・・原点(0,0,0)から見た絶対座標です。
- ローカル座標・・・1つ上の親オブジェクトから見た相対座標です。
基本的にボタンや画像などは、CanvasやPanelなどの子オブジェクトに置かれるので、ローカル座標で指定した方がわかりやすいです。
ローカル座標を指定するには、DOMoveの代わりにDOLocalMoveを使用しましょう。
// ローカル座標(4,0,0)に3秒かけて移動します
this.transform.DOLocalMove(new Vector3(4f, 0f, 0f),3f);
DOLocalMoveの注意点
ゲームオブジェクトには、アンカー(基準点)を指定することができます。
ゲームオブジェクトのアンカーが中心になっていないと、DOLocalMoveを使っても、思った通りの座標に移動しない場合があります。
アンカーを考慮した座標に移動させるには、DOAnchorPosを使いましょう。
DOAnchorPosを使うのがおすすめ!
// アンカーを考慮したローカル座標(4,0,0)に3秒かけて移動します
this.transform.DOAnchorPos(new Vector3(4f, 0f, 0f),3f);
x,y,zいずれかの軸のみ移動させる場合
DOMove, DOLocalMoveをx,y,zどれかの軸にのみ移動させたい場合は、もっと簡単な書き方があります。
- DOMoveX , DOMoveY, DOMoveZ
- DOLocalMoveX, DOLocalMoveY, DOLocalMoveZ
- DOAnchorPosX, DOAnchorPosY, DOAnchorPosZ
を使いましょう。
this.transform.DOMove(new Vector3(4f, 0f, 0f),3f);
をDOMoveXで置き換えると、以下のように簡単に書けます。
this.transform.DOMoveX(4f, 3f);
おわりに
DOTweenの移動アニメーションの方法について紹介しました。
- DOMove・・・ワールド座標指定
- DOLocalMove・・・ローカル座標指定
- DOAnchorPos・・・アンカーを考慮したローカル座標指定(おすすめ!)
移動方法は複数ありますが、最もおすすめなのがDOAnchorPosです。思った通りの座標に指定できます。