はじめに
カメラを揺らすエフェクトを実装する際には、DOTweenを使ったりしていましたが、
今回Cinemachineを使う方法について勉強しました。
Impulse
CinemachineImpulseSourceとCinemachineImpulseListenerという2つのコンポーネントを使います。
構造としては、ImpulseSourceが発信したImpulseを、ImpulseListenerを持つVirtualCameraが受信し、振動するという仕組みのようです。
揺れの強さ等の設定はSource側で行いますが、Listener側でも受信時に設定できる項目があります。
![](https://obecogames.com/wp-content/uploads/2023/09/impulse_source.jpg)
![](https://obecogames.com/wp-content/uploads/2023/09/impulse_listener.jpg)
なお、個人的に躓いたところなのですが(おそらく初歩的)、
CinemachineImpulseListenerコンポーネントはCinemachineVirtualCameraコンポーネントの拡張機能のようで、CinemachineVirtualCameraコンポーネントのAddExtensionから選択して追加できます。
インスペクター一番下のAddComponentからは選択できませんので注意です。
![](https://obecogames.com/wp-content/uploads/2023/09/add_extensions.jpg)
コンポーネントの設定が終わったら、ImpulseSourceからImpulseを発信すればOKです。
発信は、スクリプトからCinemachineImpulseSource.GenerateImpulse()で手早くできます。
結果はこちら。
おわりに
今回は、CinemachineImpulseSourceを使いましたが、
発信元にCinemachineCollisionImpulseSourceを使用すれば、
ColliderベースでImpulseを発信することが可能です。
参考記事
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9Q2luZW1hY2hpbmUlRTMlODElQTclRTglQTglQUQlRTUlQUUlOUElRTMlODElQTclRTMlODElOEQlRTMlODIlOEIlRTYlOEMlOTklRTUlOEIlOTUlRTMlODIlOTIlRTMlODElQkUlRTMlODElQTglRTMlODIlODElRTMlODElQTYlRTMlODElQkYlRTMlODElQkUlRTMlODElOTclRTMlODElOUYmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPTkwYTdkYmNmMmY2YWYwYzMzMTQ1ZWQwZTJmMjM5ODli&mark-x=120&mark-y=96&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9OTcyJnR4dD0lNDBqdXNtaXNvJnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1mNzE5MmQ0ZjAxNmNjN2M5YTIxMWI3ZGQyMmFiMTk4Zg&blend-x=120&blend-y=445&blend-mode=normal&txt64=aW4gS0xhYiDmoKrlvI_kvJrnpL4&txt-width=972&txt-clip=end%2Cellipsis&txt-color=%233A3C3C&txt-font=Hiragino%20Sans%20W6&txt-size=36&txt-x=134&txt-y=546&s=133833449bb22aff4cec67cb1d115d87)
Cinemachineで設定できる挙動をまとめてみました - Qiita
はじめにCinemachine は Unity のカメラを操作するためのモジュールです。バーチャルカメラを用意して動かしておき、カメラオブジェクトに CinemachineBrain をアタッチ…