はじめに
カメラを揺らすエフェクトを実装する際には、DOTweenを使ったりしていましたが、
今回Cinemachineを使う方法について勉強しました。
Impulse
CinemachineImpulseSourceとCinemachineImpulseListenerという2つのコンポーネントを使います。
構造としては、ImpulseSourceが発信したImpulseを、ImpulseListenerを持つVirtualCameraが受信し、振動するという仕組みのようです。
揺れの強さ等の設定はSource側で行いますが、Listener側でも受信時に設定できる項目があります。
なお、個人的に躓いたところなのですが(おそらく初歩的)、
CinemachineImpulseListenerコンポーネントはCinemachineVirtualCameraコンポーネントの拡張機能のようで、CinemachineVirtualCameraコンポーネントのAddExtensionから選択して追加できます。
インスペクター一番下のAddComponentからは選択できませんので注意です。
コンポーネントの設定が終わったら、ImpulseSourceからImpulseを発信すればOKです。
発信は、スクリプトからCinemachineImpulseSource.GenerateImpulse()で手早くできます。
結果はこちら。
おわりに
今回は、CinemachineImpulseSourceを使いましたが、
発信元にCinemachineCollisionImpulseSourceを使用すれば、
ColliderベースでImpulseを発信することが可能です。
参考記事
Cinemachineで設定できる挙動をまとめてみました - Qiita
はじめにCinemachine は Unity のカメラを操作するためのモジュールです。バーチャルカメラを用意して動かしておき、カメラオブジェクトに CinemachineBrain をアタッチ…