🏃

【Unity】UIの移動方法

2021/04/26に公開

直接値を変更してUIを移動

UI系はtransformではなくRectTransformを使うので紹介。

UIならCanvasの子オブジェクトになるはずなので親オブジェクトの相対関係の位置となるlocalPositionで行います。

指定した位置までUIを移動

using UnityEngine.UI;

   public void Start()
    {
        StartCoroutine(MoveCard());
    }

    // カードを指定された位置に移動させるコルーチン
    private IEnumerator MoveCard()
    {
        Debug.Log("カード移動コルーチン開始");
        Vector3 StartDeckPos = new Vector3(908.3f, -491f, 0f);
        Vector3 EndHandPos = new Vector3(-177f, -526f, 0f);
        float animDuration = 1f; // アニメーションの総時間
        float startTime = Time.time;

        while (Time.time - startTime < animDuration)
        {
            float journeyFraction = (Time.time - startTime) / animDuration;
            //滑らかに移動させるさせる場合は以下のコード追加する
            //journeyFraction = Mathf.SmoothStep(0f, 1f, journeyFraction);
            instantieatedCard.transform.localPosition = Vector3.Lerp(StartDeckPos, EndHandPos, journeyFraction);
            yield return null;
        }
        Debug.Log("カード移動終了");
    }

instantieatedCardとはGameObeject型の変数です。

Discussion