【Unity】特定のオブジェクトが見えたときにエフェクトを出す

投稿者: | 2021-05-14

「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が見えたときにエフェクトを出すことができました。

On Became Visible

デフォルトでは、他のオブジェクトに遮られていてもCubeが見えていることになっています。

オブジェクトがカメラに見えているか判定すると同様に、赤いCubeや遮るオブジェクトのインスペクタのStaticにチェックをいれて、オクルージョンカリングウィンドウで「Bake」をクリックすると、判定が正しくなります。

コメントを残す

メールアドレスが公開されることはありません。