見出し画像

UE5でカメラシェイク(初心者向け)

Unreal Engine 5でカメラシェイクをする記事です。
僕もまだまだ勉強し初めで、検索の仕方が良くないのか、UE5ではUE4の方法ではできなさそうでした。

最終的にこの動画に辿り着いてカメラシェイクさせることができたのですが、動画は英語なので、ここでは日本語で、初心者が初心者に向けて、自分用のメモくらいの感じで残しておこうと思います。

上記の動画では移動中にカメラを揺らす、止まったらカメラシェイクと止める、で実装されていますが、僕がちょっとよくわかってないので、この記事ではとりあえずZキーを押したらカメラが揺れる、で実装したいと思います。
エンジンの言語は日本語での説明です。

カメラシェイクのBPを作る

まずは、カメラの揺らし方を設定するための、Camera Shake Base のブループリントを作成します。
プロジェクトは何でもいいので、コンテンツブラウザ上で右クリックから「ブループリントクラス」を選択。
「親クラスを選択」ウィンドウが開くので、下の方にある「すべてのクラス」をクリックします。

検索バーで「Camera Shake」と入力するといろいろ出てくるので、その中から「CameraShakeBase」をクリックして選択します。

コンテンツブラウザ内にブループリントが作成されるので何かしら名前を付けます。とりあえずデフォルトの「NewBlueprint」のまま進めます。
作成されたブループリントをダブルクリックして開きます。
イベントグラフが表示されると思いますが、Camera Shakeでは(たぶん)使わないのでいったん閉じて、再度開きます。
すると、「Single Instance」と「Root Shake Pattern」のふたつの項目があると思います。

「Single Instance」は他のカメラシェイクに影響されずにカメラを揺らすかどうかを決める設定みたいです。ちょっとよくわかってないので華麗にスルーします。
「Root Shake Pattern」のプルダウンをクリックして、ここでは一番下の「Wave Oscillator Camera Shake Pattern」をクリックします。
デフォルトではシェイクが弱いので、ちょっとだけ設定をいじります。

「LOCATION」をクリックして設定を開き、「Location Amplitude Multiplier」と「Locatioin Frequency Multiplier」の両方を5.0にします。
項目解説についてはこの記事の最後に載せます。
設定が完了したら、コンパイル、保存を押して、カメラシェイクのセッティングは完了です。ブループリントを閉じる等してレベルエディターの画面に戻ります。

レベルブループリントにブループリントを書く

ビューポートの上のブループリントから、「レベルブループリントを開く」をクリックします。

イベントグラフが表示されるので、どこでもいいので右クリックして検索バーに「Z」と入力して「キーボードイベント」の「Z」をクリックしてノードを作成します。

次に、先ほど作成したノードの近くでもう一度右クリックして、検索バーに「Camera Manager」と入力して「ゲーム」の「Get Player Camera Manager」のノードを作成します。

次に、作成したノードの「Return Value」のアウトプットからドラッグして、検索バーに「Start」と入力して、「カメラシェイク」の「Start Camera Shake」のノードを作成します。

そうしたら、「Z」のノードの「Pressed」のアウトプットから、先ほど作成した「Start Camera Shake」のインプットへノードを繋ぎます。

そして、Shake Class のプルダウンから、先ほど作成した「NewBlueprint」を選択します。

これでブループリントの記述は完了です。レベルブループリントをコンパイル、保存して、ビューポートに戻り、プレイからZキーを押すと、カメラがすこーし揺れます。

おわり

以上、これだけです。
下記に設定項目の解説(完全ではない)を記載するので、お好みのカメラシェイクを設定してください。

軽く設定項目の解説

今回5.0を設定した「Location Amplitude Multiplier」と「Location Frequency Mulitiplier」についてですが、Amplitudeは揺れの幅、Frequencyは揺れの周波数です。
Amplitudeの数値を大きくすると揺れが大きくなり、Frequencyの数値を大きくすると速く揺れます。
Multiplierとついているのは倍率という意味で、これらの項目の下でXYZ個別に揺れの設定をして、その数値に「Location Amplitude Multiplier」と「Location Frequency Mulitiplier」で設定した数値を掛け算して揺らします。
XYZ個別の方には全てデフォルトで1.0が入っています。
上記はカメラの位置を動かすLOCATIONでの設定ですが、カメラの方向を揺らすROTATIONの設定もあります。設定内容はLOCATIONと同じです。
デフォルトではROTATIONのAmplitude Multiplierが0になっており、カメラの方向を使った振動はオフになっています。
また、LOCATIONとROTATIONのXYZ個別の方には、「Initial Offset Type」という、どこから揺れを開始するかを設定する項目があり、RandomとZeroから選択可能です。毎回必ず同じ揺れにしたい場合は、ここをZeroに設定します。
その下のFOVはちょっとよくわかりません。勉強します。
TIMINGは、「Duration」「Blend in Time」「Blend Out Time」の3つの項目があり、「Duration」は揺らす全体の時間、「Blend in Time」は揺れが最大に到達するまでの時間、「Blend Out Time」は揺れが最大からゼロになるまでの時間をそれぞれ秒単位で設定できます。
ちなみに、Durationを0以下にした場合は無限にカメラが揺れる設定になるようですが、UE5では正常に動作しないみたいです。無限に揺らしたい場合は超長時間をここに入力して、任意のタイミングでStop Camera Shake を命令してカメラの揺れを止める、とすることになります。
それから、今回は「Root Shake Pattern」をWaveに設定しましたが、ここを変更することでまた違った種類の振動をすることが可能です。ここを変えると上記の設定項目も若干変わるみたいです。
初心者にはたぶん、Waveがわかりやすいですかね。

以上、Unreal Engine 5 でカメラシェイクでした。

この記事が気に入ったらサポートをしてみませんか?