読者です 読者をやめる 読者になる 読者になる

(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

特定のカメラに映ってるかの判定【Unity】

Unity

このエントリーをはてなブックマークに追加

カメラに映っているか否か

とあるキャラクターがカメラに映ってるか否か、みたいなのを知る方法の紹介となります。
これが分かると、大量にオブジェクトがある場合に「カメラに映ってるものだけ動作させる」みたいな事が出来て負荷が抑えられるじゃないかなーと思ったりなんだり。


IsRendered.cs

それではさっそくスクリプトは以下の通りです。

OnWillRenderObject()そのレンダラーがカメラに映ってるときに呼び続けられるので、これを利用しています。またUpdate()の後にOnWillRenderObject()が呼ばれるので、フラグをfalseにするのはUpdate内で行っています。
さらにOnWillRenderObject()自体は全てのカメラが対象になるため、タグを用いて対象のカメラを限定しています。



判定にはレンダラーが必要

上記でもありましたが、レンダラーがカメラに映っている(描画されている?)時にOnWillRenderObject()が呼ばれるので、このスクリプトと同じオブジェクトにレンダラーが必要です。

f:id:kan_kikuchi:20141223180615p:plain

上記のようにレンダラーがキャラクターの一番親のオブジェクトに付いていない場合や、複数のレンダラーがある場合もあるので、注意が必要です.


おわりに

これを使って、敵の目線にカメラ付けてプレイヤーが見えているか、みたいなメタルギア的な事出来ないかな?とか思いましたが、凄い無駄な実装な気しかしないですね…