投稿者 tel | 2012年12月24日

Unityでstaticなコルーチンを呼び出す

ひさしぶりに使ったらすっかり忘れていたのでメモ。

カメラを動かすコードをFixedTarget.jsに以下のように書く。MoveCamera関数はstaticなコルーチンにしておいて外から呼び出したい。

static public function MoveCamera(start: Vector3, end: Vector3, target: Vector3) {
    var t: float = 0.0f;
    var rot = Quaternion.identity;
    rot.SetLookRotation(target - start);
    Camera.mainCamera.transform.position = start;
    Camera.mainCamera.transform.rotation = rot;
    yield WaitForSeconds(1.0);
    for(var i: int = 0; i <= 60; i++) {
        t = i / 60.0f;
        var pos: Vector3 = Vector3.Lerp(start, end, t);
        rot.SetLookRotation(target - pos);
        Camera.mainCamera.transform.position = pos;
        Camera.mainCamera.transform.rotation = rot;
        yield WaitForEndOfFrame();
    }
}

上記の関数を使う場合FixedTarget.MoveCamera(…)というように呼び出してもコルーチンは動いてくれない。
以下のようにStartCoroutineを使うとちゃんとコルーチンとして動いてくれる。

function OnGUI() {
	if(GUILayout.Button("Camera 1")) {
		StartCoroutine(FixedTarget.MoveCamera(Vector3(0, 1, -10), Vector3(-10, 1, 0), target.transform.position));
	}
}

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。