C#
Unity
2D
OnWillRenderObject

対象をカメラに移すまで待機させる

概要

現在見えている画面外に配置した敵等のオブジェクトが、カメラに映るまで待機させておく方法。

ソース

    private bool is_Rendered;

    void OnWillRenderObject()
    {
        if (Camera.current.name == "Main Camera")
        {
            is_Rendered = true;
        }
    }

OnWillRenderObject()はオブジェクトが表示されている場合カメラごとに 1 度呼び出されます。
なので、呼び出されたらis_Renderをtrueにして、あとはUpdate()内の行動をif分などで制御したりすればよい。

    void Update () {

        TimeElapsed += Time.deltaTime;

        if (is_Active == true && is_Rendered == true)
        {
            //プレイヤーの方向に向かって移動していく
            Vector3 diff = (player.transform.position - transform.position); //プレイヤーと対照との差分を取得
            Enemy_rigidbody.velocity = new Vector3(diff.x * speed_x, diff.y * speed_y);//取得した座標に対して変数をかけてやると進む
        }

こんな感じ。