[Unity] オブジェクトが画面外に出たときに消えるようにする
シューティングゲームをUnityで開発するとき、ショットが画面外に出たときに消したい場合が出てくるでしょう。
今回はこの実現方法について考察してみたいと思います。
■OnBecameInvisibleを拾う
オブジェクトが画面外に出て見えなくなったとき、OnBecameInvisible()メソッドが呼ばれます。
このメソッドの中で自身のゲームオブジェクトを破棄すれば画面外に出たときに自動的に消えるようになります。
void OnBecameInvisible() { Destroy (this.gameObject); }
しかし、オブジェクトの出現位置が最初から画面外にいるときは呼び出されないので注意が必要です。
必ず画面内にオブジェクトが出現する必要があります。
■コリジョンを使う
OnBecameInvisibleの最初から画面外にオブジェクトが出現したときに消えない問題を解消するための方法です。
画面内の表示領域の当たり判定を持つオブジェクトを一つ用意し、このオブジェクトに当たらなければオブジェクト破棄されるようにします。
こうすれば、最初から画面外に居ても問題なく消えるようになります。
シューティングゲームで画面外から敵が弾を撃ってくる動作を実現したい場合などは、画面の表示領域よりやや広めの領域を当たりとして利用すれば良いでしょう。