この記事でのバージョン
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");