
こんにちはTakumiです。
今回はAnimation(アニメーション)とキューブを用いた動く床の作成方法について解説していきます。
Animationとキューブを用いた動く床の作成方法
1.動く床の基となるオブジェクトの作成
まずは、FirstPersonTemplateでプロジェクトを作成し、キューブをマップ上に作成してください。
キューブを配置したら、ブループリントを作成し、BoxのZ軸のサイズを0.1に変更します。
サイズを変更したらBox Collisionコンポーネントを作成してください。
ここではTriggetとして使用するので、名前をBoxTriggerに変更しておきます。
名前を変更したらBoxTriggerを以下の画像のように配置して コンパイルしてください。
コンパイルが完了したらブループリントの名称と、レベルに配置されているキューブの名前をMoveFloorに変更しておきます。
2.Animationの作成
コンテンツフォルダ上で右クリックし、一覧のアニメーション内にあるレベルシーケンスを選択してください。
レベルシーケンスを作成したら、名前をMoveFloorAnimationに変更しておきます。
名前を変更したらダブルクリックしてシーケンサーを表示させてください。
Animationの動作は、指定したオブジェクトの座標、回転、スケーリングの値を変更してシーケンサー内部に点をプロットしていくことによって作成することができます。
まずは、アウトライナ内のMoveFloorをシーケンサー内部にドラッグ&ドロップしてください。
MoveFloorをドラッグ&ドロップしたら、トランスフォームタブを開き、座標を変更していきます。
※横軸は、秒数ではなく、フレーム数を表しているため、そこだけ注意してください。
ここでは、30fpsを指定しているため、横軸の30の位置が1秒となります。
まずはプレイヤーがMoveFloorに乗ったら上昇する動作を作成していきます。
Z軸の値を変更せずプラスボタンをクリックしてください。
横軸の0000の位置にオレンジ色の点がプロットされます。
続いて、横軸の0100の位置に移動し、Z軸の値を480に変更して点をプロットします。
点をプロットするとMoveFloorが上に移動しているはずです。
Y軸とX軸も同じ要領で以下のように点をプロットしてみてください。
横軸:0100 X:-130
横軸:0200 X:500
横軸:0200 Y:-60
横軸:0300 Y:700
上記の通りに点をプロットしていくと、以下の画像ようになるはずです。
以下の通りに作成できていたら、プレイまたはリバース再生をしてみてください。
しかし、このままでは、プレイヤーがMoveFloorで最後まで移動してしてしまうとリバース再生ができなくなってしまうので、 シーケンサーの適当な箇所で右クリックし、プロパティのセクションにある Whin FinishedをKeep Stateに変更してください。
3.Overlapイベントを用いたMoveFloorの移動処理の作成
続いて、MoveFloorのBoxTriggerとプレイヤーがOverlapしたらMoveFloorが移動するようブループリントを作成していきます。
レベル上に配置されているMoveFloorを選択して右クリックし、イベントを追加にある OnActorBeginOverlapとOnActorEndOverlapをクリックしてレベルブループリント上にイベントを追加してください。
このままでは作成したAnimationを再生することはできないため、イベントを追加したらMoveFloorAnimationをレベル上に配置してください。
レベル上に配置したら、MoveFloorAnimationが選択された状態でレベルブループリントを開き、 R + 左クリックでMoveFloorAnimationのリファレンスを作成してください。
MoveFloorAnimationの出力ピンから引き出してGet Sequence Playerを接続します。
その先からさらに引き出してPlayとPlay Reverseを選択し、以下のように接続してください。
以下の処理では、BoxTriggerとActorがOverlapしたらAnimationが再生され、Overlapしていなければリバース再生します。
ここまで作成できたらプレイして確認してみてください。