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