最近DOTweenを使用したオブジェクト移動制御を実装する機会がありました。
かなり簡単かつ便利そうだったので紹介しようかと思います。
(さわりのさわりした紹介しません(できません))
DOTweenの導入
DOTweenのインポート
はじめにAssetStoreにてDOTweenを検索して、DOTweenをマイアセットに追加します。
![](https://localring-web.com/wp-content/uploads/cocoon-resources/blog-card-cache/f68492c4e69f84c80ddc4a0d8c9f5c5b.png)
DOTween (HOTween v2) | アニメーション ツール | Unity Asset Store
Use the DOTween (HOTween v2) tool from Demigiant on your next project. Find this & more animation tools on the Unity Asset Store.
![](https://localring-web.com/wp-content/uploads/2024/06/000_AssetStore-1-1024x525.jpg)
その後、UnityのPackageManagerからDOTweenをインポートします。
![](http://localring-web.com/wp-content/uploads/2024/06/001_PackageManager1.png)
![](http://localring-web.com/wp-content/uploads/2024/06/001_PackageManager-1024x527.png)
これでDOTweenのインポートは完了です。
DOTweenインポート後の初期設定
インポート後に表示される[New Version of DOTween Imported]ウィンドウの[Open DOTweeen Utility Panel]をクリックします。
![](http://localring-web.com/wp-content/uploads/2024/06/002_NewVersionOfDOTweenImported.png)
その後、[DOTween Utility Panel]ウィンドウの[Setup DOTween…]をクリックして[Apply]をクリックします。
![](http://localring-web.com/wp-content/uploads/2024/06/003_DOTweenUtilityPanel.png)
![](http://localring-web.com/wp-content/uploads/2024/06/003_DOTweenUtilityPanel2.png)
これでインポート後の初期設定は完了です。
DOTweenを使用したオブジェクト移動制御
簡単なオブジェクト移動制御方法を2パターン紹介します。
移動時間を設定したオブジェクト移動制御
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;//DOTween使用のため記載
public class DOTween_Sample : MonoBehaviour
{
[SerializeField,Tooltip("移動終了地点")]
private Transform m_goalPoint;
[SerializeField,Tooltip("移動時間")]
private float m_moveTime;
void Start()
{
//m_moveTimeで設定した時間でm_goalPointの位置まで移動する
this.transform.DOMove(m_goalPoint.position, m_moveTime).SetEase(Ease.Linear);
}
}
![](http://localring-web.com/wp-content/uploads/2024/06/AssetTest2.gif)
移動速度を設定したオブジェクト移動制御
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;//DOTween使用のため記載
public class DOTween_Sample : MonoBehaviour
{
[SerializeField,Tooltip("移動終了地点")]
private Transform m_goalPoint;
[SerializeField, Tooltip("移動スピード(s/m)")]
private float m_moveSpeed;
void Start()
{
//移動終了地点までの距離を取得
float distance = Vector3.Distance(this.transform.position, m_goalPoint.position);
//距離÷速さで移動時間を取得
float moveTime = distance/ m_moveSpeed;
//m_moveSpeedで設定したスピードでm_goalPointの位置まで移動する
this.transform.DOMove(m_goalPoint.position, moveTime).SetEase(Ease.Linear);
}
}
![](https://localring-web.com/wp-content/uploads/2024/06/AssetTest1.gif)
終わりに
今回は簡単な移動方法のみ紹介しましたが、複数の処理を組み合わせることで複雑な移動を実装することが出来ます。
時間があったら今後、詳しいところもまとめるかも?
コメント