Unity研究所<Unityによるゲーム開発、映像開発>

Unity初心者40代後半中年中間管理職おやじが綴るゲームで小遣い稼ぎできるようになるまでのブログ

Unity 小ネタ DOTweenを使ってみた!!

youtu.be

 

前々から、便利だという噂はネットの記事やTwitterなどで見ていたが、テキストのアニメーションなんかも自分で実装できた方がいいに決まっているという頑固一徹を通してきたが・・・

 

まあまあ、できるようになったし

 

テキストのアニメーションとか、UIのアニメーションのエキスパートになりたいわけではないし

 

土日しか時間がない中では、だんだん効率を重視したくなり

 

とうとう手を出しました!!

 

f:id:Harukichi:20210307213011g:plain

DoTweenで文字を動かしてみた

 

お分かりだろうか??

 

 

 

 

わかりにくい(-_-メ)

 

 

文字のスプライトが下から上がってきて、フェードで消えるというやつ

 

DOTweenのアセットのインストール、初期設定は下記を参考にさせてもらいました

(ありがとうございました!!)

amagamina.jp

 

◆今回の実装スクリプト

テキストのスプライトにアタッチして使用

 

まずは使えるようにするおまじない

using DG.Tweening;

 

public class RogoCrtl : MonoBehaviour
{

 //移動 移動量、移動時間はインスペクターで設定できるようにしている 
public float MoveX = 0;
public float MoveY = 0;
public float MoveZ = 0;
public float MoveDuration = 1.5f;
public float FadeDuration = 1.0f;

bool IsReady = true;

 

public void Action()
{

  //準備ができているかのフラグ
  IsReady = false;

 

    //初期位置に戻すために位置を覚えておく
  Vector3 oldposition = transform.position;

 

  //ここが本題

  //移動
  transform.DOLocalMove(new Vector3(MoveX, MoveY, MoveZ), MoveDuration)
   .SetRelative() //相対距離に設定
   .SetEase(Ease.OutCubic) //終わりに向けてスピードが遅くなるように設定
   .OnComplete(() => { //処理が終了した時のコールバック

    //フェードアウト

    GetComponent<SpriteRenderer>().DOFade(0, FadeDuration)
     .OnComplete(() => { //処理が終了した時のコールバック
      transform.position = oldposition; //元の位置に戻す
      GetComponent<SpriteRenderer>().DOFade(1, 0.1f) //元の濃さに戻す
       .OnComplete(() => { //処理が終了した時のコールバック
        IsReady = true; //処理が終了したのでフラグを更新


       });
     });
   });

}

 

 

〇インスペクター

f:id:Harukichi:20210307214055p:plain

インスペクターで移動量等を設定

下から上に移動させるので、Y軸に移動距離を入力

移動する時間を0.5秒に

フェードアウトの時間を1秒に

 

◆動きの参考にさせてもらったサイト (ありがとうございました!!)

 

game-ui.ne

以上