[Unreal Engine 4] シーケンサー内でプレイヤーカメラにカメラシェイクを使用する際のあれこれ
こんにちは。
参加したプロジェクトでUE4のシーケンサー内でカメラシェイクを使うことがあり、今回はその時の所感を記述します。
作業環境
Windows 10
UE4.26
カメラシェイクとは
シーケンサーでカメラにブレやアニメーションを加算するアセット
https://historia.co.jp/archives/7374/
今回やったこと
カメラシェイクの用意
1. シーケンサー内にカメラシェイクを配置する方法。
2. シーケンサー内でカメラシェイクをイベントとして配置する方法。
カメラシェイクの用意
新規ブループリントを作成の画面で、検索窓に"Camera Shake"と入力します。
ブループリント編集画面を開き、詳細タブでカメラの揺れを設定します。
各パラメーターの詳細は以下のサイトを参照してください。
http://kagring.blog.fc2.com/blog-entry-296.html
今回は簡単に連続した小刻みな揺れを想定し、以下を設定します。
Oscillation
Duration: 50 (とりあえず長めに)
Oscillation >> Rot Oscillation >> Pitch
Amplitude: 0.22
Frequency: 50
1. シーケンサー内にカメラシェイクを配置する方法。
一般的に使用例が多かった方法です。
今回はTPSのキャラクターを追従するカメラにカメラシェイクを適用します。レベルにプレビューウィンドウ上部のCinematics >> Add Level Sequence をクリックし、レベルシーケンサーを作成します。
作成したシーケンサーにTirdPersonCharactorをドラック&ドロップで追加し、追加したTirdPersonCharactor横のプラスマークからCameraShakeをシーケンサーに追加します。
これだけで再生すれば揺れが適用されます。
タイムライン上で右クリックすれば揺れの大きさなどが加算して変更できるなど追加編集が可能です。
2. シーケンサー内でカメラシェイクをイベントとして配置する方法。
1. の方法が視覚的に振動する時間が管理できるため、扱いやすいのですが、今回導入しようとしたプロジェクトでは、複数間のデバイスでオンライン通信を行う予定でり、通信時にプレイヤーをスポーンさせる方法をとっていました。しかし、この方法ではiOSやAndroid端末での実機でカメラシェイクが動作しませんでした。(配置の方法に問題がありそうです…。編集時のプレビューでは動くのですが。)
そのため、応急的に以下のサイトを参考にして、ブループリント内にイベントを作成してカメラシェイクを動作させる方法で対処しました。
http://kagring.blog.fc2.com/blog-entry-296.html
https://historia.co.jp/archives/634/
レベルシーケンサー内にイベントトリガートラックを新規で作成し、適当な位置にキーを打ちます。
キーをダブルクリックするとSequenceDirectorが開くので、以下の画像のようにStart Camera Shakeを配置します。
さらにGet Player Controllerを配置しStart Camera ShakeのTergetに接続してください。
これで、タイムラインでイベント発火時にカメラシェイクが開始されます。
ついでに少し揺れに変化を加えます。
きれいな書き方ではないですが、大きな揺れのカメラシェイクを追加で作成し、以下のように、それぞれを発火するイベントと、それらを終了するイベントの計3つを作成します。
プレビューすると以下のようになります。
しかし、この方法では実行時にしかプレビューできないため、やや不便です。途中でスポーンするプレイヤーカメラに対してカメラシェイクを適用するもっとよい方法をご存じの方がいたら教えていただきたいです。。。
以上になります。