【ハルシオンブログ】Dotweenでオブジェクトを移動したりする際に、時間でなく速度で動かす方法
こんにちは。坂内っす。
めっきり秋の天候になりましたね。
でも2週間もしたら冬になるんじゃないですか?
秋短そうな気がします。
UnityでDoTweenを結構使ってるんですが、オブジェクトの移動の際に速度で移動させたいって時ありますよね。
その方法を軽く紹介。
まずはふつうに動かしてみます。
[Blog20221017.cs]

こうやると、X座標252まで2つのオブジェクトが3秒かけて動きます。
もちろん距離によって速度がバラバラになります。
時間での移動になります。
では同じ速度にしたい場合、今まではわざわざ計算してました・・・
[Blog20221017.cs]

こんな感じでやってたのですが、素敵なオプションがあるみたいです。
SetSpeedBase
これをつければわざわざ時間を計算しなくてもイイらしいです。
[Blog20221017.cs]

あらほんと‥‥素敵なオプションですね。
これ使っていこうと思います。
DoTweenで移動などの際に速度で動かす方法でした。
では、あでゅ~ノシ
めっきり秋の天候になりましたね。
でも2週間もしたら冬になるんじゃないですか?
秋短そうな気がします。
UnityでDoTweenを結構使ってるんですが、オブジェクトの移動の際に速度で移動させたいって時ありますよね。
その方法を軽く紹介。
まずはふつうに動かしてみます。
[Blog20221017.cs]
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
public class Blog20221017 : MonoBehaviour
{
[SerializeField] Image img1;
[SerializeField] Image img2;
IEnumerator Start()
{
yield return new WaitForSeconds(1f);
img1.transform.DOLocalMoveX(252, 3f).SetEase(Ease.Linear);
img2.transform.DOLocalMoveX(252, 3f).SetEase(Ease.Linear);
}
}

こうやると、X座標252まで2つのオブジェクトが3秒かけて動きます。
もちろん距離によって速度がバラバラになります。
時間での移動になります。
では同じ速度にしたい場合、今まではわざわざ計算してました・・・
[Blog20221017.cs]
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
using System.Collections;
public class Blog20221017 : MonoBehaviour
{
[SerializeField] Image img1;
[SerializeField] Image img2;
IEnumerator Start()
{
yield return new WaitForSeconds(1f);
float speed = 100f;
float moveTime1 = (252f - img1.transform.localPosition.x) / speed;
float moveTime2 = (252f - img2.transform.localPosition.x) / speed;
img1.transform.DOLocalMoveX(252, moveTime1).SetEase(Ease.Linear);
img2.transform.DOLocalMoveX(252, moveTime2).SetEase(Ease.Linear);
}
}

こんな感じでやってたのですが、素敵なオプションがあるみたいです。
SetSpeedBase
これをつければわざわざ時間を計算しなくてもイイらしいです。
[Blog20221017.cs]
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
using System.Collections;
public class Blog20221017 : MonoBehaviour
{
[SerializeField] Image img1;
[SerializeField] Image img2;
IEnumerator Start()
{
yield return new WaitForSeconds(1f);
float speed = 150f;
img1.transform.DOLocalMoveX(252, speed).SetEase(Ease.Linear).SetSpeedBased();
img2.transform.DOLocalMoveX(252, speed).SetEase(Ease.Linear).SetSpeedBased();
}
}

あらほんと‥‥素敵なオプションですね。
これ使っていこうと思います。
DoTweenで移動などの際に速度で動かす方法でした。
では、あでゅ~ノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】Unityでスクリプト変更してコンパイルしたらConsoleログをクリアする機能が増えてた | 【ハルシオンブログ】ScrollViewのスクロール位置をスクリプトで変える »
コメント
| h o m e |