関数その2
移動する
コルーチンの中では移動のプログラムを書いても通常1フレームしか進まない
whileを使って繰り返すことでちゃんと動くようになる。
プログラムを呼び出すときは
StartCoroutine(プログラム名());と書く
もしくは yield return プログラム名();と書く。
StartCoroutine(プログラム名());の時は下のプログラムが待たずに実行されるが、yield returnの時は下のプログラムは終わるまで待ってくれる。
移動する
移動のプログラムと名前を変えないとエラーになる。
コルーチン用のプログラムと通常の関数は使い方が違うが、名前と引数しか見ていない。
別の名前に変える必要がある。
public static IEnumerator 移動する(GameObject obj, Vector3 追加座標, float 速度)
{
RectTransform rect = obj.GetComponent<RectTransform>();
if (rect != null)
{
Vector3 start = rect.anchoredPosition;
Vector3 target = start + 追加座標;
while (Vector3.Distance(rect.anchoredPosition, target) > 0.01f)
{
rect.anchoredPosition = Vector3.MoveTowards(
rect.anchoredPosition,
target,
速度 * Time.deltaTime
);
yield return null;
}
yield break;
}
Vector3 start3 = obj.transform.position;
Vector3 target3 = start3 + 追加座標;
while (Vector3.Distance(obj.transform.position, target3) > 0.01f)
{
obj.transform.position = Vector3.MoveTowards(
obj.transform.position,
target3,
速度 * Time.deltaTime
);
yield return null;
}
}

