「VFX Visibility Event Binder」コンポーネントを使って、特定のオブジェクトがカメラに映ったときや、映らなくなったときにVisual Effectオブジェクトにイベントを送ってみました。
VFXグラフを作る
VFXグラフでは、衝突したときにエフェクトのイベントを発生させると同様に、Single Burstブロックで、OnPlayイベントと同時に、一度だけパーティクルを出します。
今回は、イベントアトリビュートを使わないので「Get Attribute: position」オペレーターは必要ありません。
レンダラーとEvent Binderコンポーネントを付ける
シーンのCubeに「VFX Visibility Event Binder」コンポーネントを付けました。また、同じオブジェクトにレンダラーコンポーネントがあることを確認します。
「VFX Visibility Event Binder」コンポーネントのTargetには、上のVFXグラフを付けたVisual Effectオブジェクトをドラッグアンドロップし、Event Nameにイベント名を入力します。
Activationでは「On Became Visible」と「On Became Invisible」を選べます。「On Became Visible」では、このオブジェクトが見えるようになったとき、「On Became Invisible」では、見えなくなったときにイベントを発生させます。
これで、Cubeが見えたときにエフェクトを出すことができました。
デフォルトでは、他のオブジェクトに遮られていてもCubeが見えていることになっています。
オブジェクトがカメラに見えているか判定すると同様に、赤いCubeや遮るオブジェクトのインスペクタのStaticにチェックをいれて、オクルージョンカリングウィンドウで「Bake」をクリックすると、判定が正しくなります。