(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!


DotweenのSetEaseにメソッドを指定して、プログラムで動きを制御する方法 【Unity】【DOTween】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 2022.2.8f1
DOTween Pro 1.0.381

DotweenのSetEase

Unityで位置や大きさなどのアニメーション、

いわゆるTweenを実装するアセットとしてお馴染みのDOTweenは、

DOTween Pro | Visual Scripting | Unity Asset Store


SetEaseを使う事で値がどう変化するか、どう動くかを指定する事が出来ます。

transform
  .DOMove(Vector3.zero, 0.5f)//座標(0,0,0)に0.5秒かけて移動
  .SetEase(Ease.OutBounce);//SetEaseでバウンドする動きを設定


なお、上記のようにEase.◯◯という形で用意されてる波形を使う事も出来ますし、

(SetEaseを使わない場合のデフォルトはOutBounce)

イージング関数チートシート


InspectorやプログラムからAnimationCurveを作成して、それを指定する事も出来ます。

//Inspectorで波形を指定する用
[SerializeField]
private AnimationCurve _animationCurve;
transform
  .DOMove(Vector3.zero, 0.5f)//座標(0,0,0)に0.5秒かけて移動
  .SetEase(_animationCurve);//Inspectorで指定した動きを設定


そしてタイトル通り、メソッドを指定してプログラムで制御する事も可能です

具体的には以下のように、返り値がfloatで引数に4つのfloatがあるメソッドを指定します。

//DoTween用のSetEase用メソッド
private float GetEaseValue(float time, float duration, float overshootOrAmplitude, float period) {
  //時間が進んだ割合計算
  var timeRate = time / duration;

  //基本ランダムな数値だが、時間が進むほど1に収束していく
  return UnityEngine.Random.Range(timeRate, 1.0f);
}
transform
  .DOMove(Vector3.zero, 0.5f)//座標(0,0,0)に0.5秒かけて移動
  .SetEase(GetEaseValue);//メソッドで動きを設定


これを使えば状況に応じて動的に動きを変えられますし、ランダムな動きも作りやすいです。