(:3[kanのメモ帳]

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

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!

    

Cinemachineでカメラにランダムな振動や手ブレを追加する方法【Unity】【Cinemachine】


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

この記事でのバージョン
Unity 2022.3.21f1
Cinemachine 2.9.7


はじめに

今回はカメラ操作を簡単に行えるUnityの公式機能Cinemachineを使って、



カメラにランダムな振動や手ブレを追加する方法の紹介です!



なお、記事中では以下のアセットを使っています。

Japanese School Gymnasium - Unity Asset Store
Aoi Character Pack - Unity Asset Store



Cinemachineでカメラにランダムな振動や手ブレを追加する方法

さっそくですが、Virtual CameraのNoiseをBasic Multi Channel Perlinに設定し、


Noise Profileを(none)以外にする事で、カメラを自動で揺らす事が出来ます。


例えば6D Shakeなら激しい多方向のランダムな揺れ、


6D Wobbleなら滑らかでリズミカルな揺れ、


Handheld_normal_mildなら軽い手ブレといった具合です。


なお、Amplitude Gainで揺れの大きさ、Frequency Gainで揺れの回数が設定出来ます。


もちろん、プログラムから変更する事も可能です。

/*VirtualCameraはCinemachineVirtualCamera*/

//CinemachineBasicMultiChannelPerlinを取得し、揺れの設定を変更する
var perlin = VirtualCamera.GetCinemachineComponent<CinemachineBasicMultiChannelPerlin>();
perlin.m_AmplitudeGain = 2.0f;
perlin.m_FrequencyGain = 3.0f;


同様に揺れの切り替えも可能なので、一瞬だけ揺らすみたいな使い方も出来ます。

//揺れを無効に
perlin.enabled = false;


また、揺れ方を独自に設定したい場合Noise ProfileをCloneし、


新しいアセットを作り、Inspectorで設定を変更する事により独自の揺れを作れます。


この揺れ方を設定するアセットはNoiseSettingsといい、プログラムから変える事も可能です。

//揺れ方の設定を変更
var perlin = VirtualCamera.GetCinemachineComponent<CinemachineBasicMultiChannelPerlin>();
perlin.m_NoiseProfile = Resources.Load<NoiseSettings>($"New Noise Profile");