【Unity】実例で解説!DOTweenの使い方【移動編】

はじめに

この記事では、実際の使用例をお見せしながら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です。思った通りの座標に指定できます。

タイトルとURLをコピーしました