(Unity)コルーチンを使ってオブジェクトを移動させる

(サンプルコード1)

  • 条件文を使ってコルーチンから抜ける。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DoorMove : MonoBehaviour
{
    private Vector3 pos;

    void Start()
    {
        StartCoroutine(Move());
    }

    private IEnumerator Move()
    {
        while (true)
        {
            pos = transform.position;
            transform.Translate(0, 0.01f, 0);
            yield return new WaitForSeconds(0.01f);

            if (pos.y > 6f)
            {
                break;
            }
        }
    }
}

(サンプルコード2)

  • for文を使って、所定回数だけ上昇を繰り返したら終了
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DoorMove : MonoBehaviour
{
    private Vector3 pos;

    void Start()
    {
        StartCoroutine(Move());
    }

    private IEnumerator Move()
    {
        // 同じ作業を0.01秒毎に600回繰り返す。
        for (int i = 0; i < 600; i++)
        {
            transform.Translate(0, 0.01f, 0);
            yield return new WaitForSeconds(0.01f);
        }
    }
}