関連ブログ
- [UE5] 元の位置に戻るカメラの実装 2024.12.18UE
- [UE5]難易度変更に対応したシューティングゲームを作ってみよう 2024.12.11UE
- [UE5] インタラクト可能なモノの量産に役立つBPを作ってみよう 2024.12.04UE
CATEGORY
2024.02.16UE5UE/ 初心者向け
執筆バージョン: Unreal Engine 5.3
|
こんにちは!今回は第21回ぷちコンのテーマ「おす」にちなんで、
「物理シミュレーションでアセットを押す」方法について解説しながら
「足場をうごかして高台に登るギミック」を作成していきます。
足場を動かす以外にも、箱を押してスイッチを踏むギミックなどにも応用できそうです。
ThirdPersonテンプレートを用意し、初期レベルに配置されている円柱を引き延ばして高台にします。
スケールZを2.5に変更します。
Megascansから以下のアセットを追加していきます。
https://quixel.com/megascans/home?assetId=ukmpbbsaw
WindowタブからQuixel Bridgeを開きます。
検索欄に「Wooden Music Chair」 と入力します。
以下の手順でプロジェクトに追加します。
Megascansについてはこちらを参考にしてください。
参考:[UE5] 無料で使える高品質アセット”Megascans”がドラッグ&ドロップで簡単に配置できる! Quixel Bridgeを使ってみよう
先ほどMegascansから追加した椅子には、物理シミュレーションで使用される「単純なコリジョン」が用意されていません。
自分で作成する必要があります。
編集画面を開きます。
CollisionタブからAdd Box Simplified Collisionを選択します。
単純なBOX型コリジョンの追加ができました。
コリジョンの作成について、詳しくはこちらを参考にしてください。
参考:[UE5] スタティックメッシュにコリジョンを設定する方法
それでは、この椅子に物理シミュレーションを適用させていきます。
今回は拡張性を考慮して、Blueprintとして実装してみましょう。
まずは新しいブループリントクラスを作成します。
Content直下に新しいフォルダを作成し、「Blueprints」と名付けます。
作成したフォルダを開いた状態で、新しいBPクラスを作成します。
Actorを選択しましょう。
作成したブループリントの名前を「BP_Chair」に変更します。
ダブルクリックして編集画面を開きます。
StaticMeshを追加し、Chairと名付けます。
詳細タブを開き、先ほどの椅子のメッシュをChairのStaticMeshに設定します。
スケールを変更します。
Mobility(可動性)がMovableに設定されていることを確認し、
Simulate Physics(物理シミュレーション)を有効化します。
レベルエディタに戻り、作成したBP_Chairをレベルに配置します。
プレイして、椅子を動かしてみましょう。
くるくると回ってしまい押しづらいです。
BP_Chairの編集画面に戻り、コンストレイントの設定から回転を制限します。
XYZそれぞれのチェックボックスをONにすると、その軸での回転(ピッチ、ロール、ヨー)を禁止することができます。
回らなくなりました!
椅子を押したあと、滑っていくのが気になります。
もう一度BP_Chairを開いて、質量を600Kgに変更しましょう。
これで大きくて重い椅子を押しているような手ごたえになります。
アクションゲームっぽくなるように、BP_Chairを「乗るとプレイヤーが跳ねるトランポリン」に改造してみます。
BP_Chairを開きます。
ビューポートを開きBox型のコリジョンを追加して、「Jump Trigger」と名付けます。
プレイヤーが上に乗ったとき反応するように大きさと位置を調整します。
コリジョンにプレイヤーが触れたとき、ジャンプさせるしくみを作ります。
On Compornent Begin Overlapイベントを追加します。
自動でイベントグラフの画面に切り替わります。
ノードの右側にある白い矢印ピンから線を引っ張ってノードを追加していきます。
それ以外のピンから引っ張ったり、なにもないところで右クリックしてもノードを追加できます。
同じ手順で画像のようにノードを組みます。(「==」ノードは「Equal」という名前で、「=」と検索しても出せます。)
物理制御されたアクタに力を加える方法としてAddForceやAddImpulseなどの関数が知られていますが、
プレイヤーはCharacterMovementコンポーネントで動いているのでそれらの関数で動かすことができません。
ジャンプさせるには、Velocityを追加/変更してキャラクターを飛ばすLaunch Character関数が有効です。
今回は真上に飛ばしたいので、VelocityのZの値を1500に書き換えます。
最終的には以下のようになります。
これでトランポリンの完成です!
高台の高さを調整して遊んでみました。