FC2ブログ
    04 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 06

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】Unity DotweenのDoMove系を絶対ではなく相対で動かしたい時 

    こんにちは。雨の時期になりましたね。
    外行くの億劫になる毎日・・・・まぁ家から出ないんですけど。坂内です。

    UnityのDotweenのMove系を使った際に、「今の座標から●●動かす」という処理を行いたいが、想定した動きにならないってことありませんか?

    例えば、こんな感じでボタンとイメージを置き、ボタンを押すごとにイメージを少しずつ上に移動したいって時。


    こんなコードを書いてみたり。

    [Blog20220404.cs]

    using UnityEngine;
    using UnityEngine.UI;
    using DG.Tweening;

    public class Blog20220404 : MonoBehaviour
    {
    [SerializeField] Button btnMove;
    [SerializeField] Image imgObject;

    void Start()
    {
    btnMove.onClick.AddListener(MoveObject);
    }

    void MoveObject() {
    imgObject.transform.DOLocalMoveY(1f, 0.6f);
    }

    }



    ボタンを押すと、Yを1上に動かす、といった処理。



    いや、そうじゃない。そうなんだけど・・・・

    DOLocalMoveは「引数1の場所に、引数2の時間を使って移動」なので、こうなっちゃいますよね。

    やりたいのは、「ボタンを押すと引数1の分移動」なわけで、目的座標として使いたいわけではないのですが・・・・・

    そんな時は、SetRelativeをつけましょう。

    [Blog20220404.cs]

    using UnityEngine;
    using UnityEngine.UI;
    using DG.Tweening;

    public class Blog20220404 : MonoBehaviour
    {
    [SerializeField] Button btnMove;
    [SerializeField] Image imgObject;

    void Start()
    {
    btnMove.onClick.AddListener(MoveObject);
    }

    void MoveObject() {
    imgObject.transform.DOLocalMoveY(1f, 0.6f).SetRelative();
    }

    }





    一応動いてますが・・・・移動量すくないっすね。

    SetRelativeはいわゆる相対的になる感じですね。

    SetRelativeを付けないときは「引数1へ移動」だったのが、SetRelativeをつけると「引数1分移動」になりました。

    ただし、相対量が1fだったため、ちょっと動いているのが分かりずらいですが・・・・

    imgObject.transform.DOLocalMoveY(20f, 0.6f).SetRelative();

    20くらいにするとこんな感じに動きます。



    ということで、DoTweenの絶対値挙動をを相対値の挙動に変えるには、SetRelativeを使うという話でした。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/876-db577212
    この記事にトラックバックする(FC2ブログユーザー)