車動かします!!(∩´∀`)∩
今回は車の無料モデルを使用しつつ、
ChaosVehicleWheelを使用した車の動作を作ってみます。
※UE5.1を使用しています。
※説明の誤りや不明瞭な点はコメントいただけると幸いです。
※こちらの動画を参考に作成しています。
無料の車のアセットを移行
まずは無料アセットであるVehicleVarietyPackVolumeの、
プロジェクトを作成します。
続いてそのプロジェクトからセダンのモデルや各種データを、
プロジェクトに移行します。
プロジェクトフォルダ内のVehicleVarietyVol2 → Skeletonsから、
SK_Sedan_01aを右クリックして移行を選択します。
移行ができてContentsフォルダに入っていれば完了です。
車の動きのBP作成
車の動きを作成する前にプラグインを設定します。
まずはChaosVehiclesPluginをオンにします。
プラグインを設定したら、Skeletonフォルダ内にある物理アセットを選択します。
今回はセダンのモデルを使用しているのでSK_Sedanの物理アセットを使用します。
物理アセットを開いたらタイヤの動きなどを設定していきます。
手順としては下記の画像となります。
1.各タイヤを選択します。
2.CollisionReponseをDisabledに変更する。
3.PrimitiveTypeをSphereに変更する。
4.AutoOrienttoBoneをONに変更する。
物理アセットの設定の設定が完了したので、
各BPを作成していきますが何が必要なのかを説明していきます。
ChaosVehicleWheel → 車の車輪の処理をするBP
WheelVehiclePawn → アクセルやブレーキなどの動作を行うPawnBP
上記2つを使用して車の動きをBPで再現する仕組みとなっております。
まずはChaosVehicleWheelを追加していきます。
ブループリントクラスを選択してすべてのクラスから、
「chaosve」と検索して「ChaosVehicleWheel」を選択します。
作成したらまずは前輪の操作をしていきます。
主に設定するのをいくつか紹介していきます。
AxleType → 前輪か後輪かを選択
Wheel Radius → 車輪の半径・Wheel Width → 車輪の幅
Max Steer Angle → ステアリングの最大角
Affected by steering → ステアリングの影響を受けるか?
今回使用していないですがパラメータの説明はしておきます。
しっかりしたレーシングゲームを作る場合は下記のパラメータは重要です。
cornering stiffness → ステアリングの立ち上がり
Slip Sleed modifire → 横すべりのパラメータ
Slip Threshold → スリップするまでの閾値
Skid Threshold → 横すべりする閾値
Affected by Brake → ブレーキの影響を受けるか
Affected by HandBrake → ハンドブレーキの影響を受けるか
Affected by Engine → エンジンの影響を受けるか
ABSEnabled → ABSを有効にするか
Traction Control Enabled → 牽引動作を有効にするか
External Torque Combine Method → 外部のトルク動作処理の活用
上記は前輪のみの設定なので今度は後輪も作成します。
BPをコピーして後輪を作ります。
設定する値は下記の通りになります。
車輪用のBPの作成が完了したので車体のBPを作成していきます。
Wheelで検索して「WheeledVehiclePawn」を作成します。
作成が完了したら作成したWheeledVehiclePawnのBPを開いて、
スケルタルメッシュに車のスケルタルメッシュを指定します。
※コンポーネント欄でPawn(Self)を指定しておかないと表示されないので注意!
スケルタルメッシュを設定したらSimulatePhysicsをオンにします。
※これを設定しないと動作しないので注意してください。
プレイヤーとして操作する際のカメラがないので、
SpringArmとCameraを設定しておきましょう。
今度は各ホイールの情報をボーンに適応します。
Vehicle Movement Componentの詳細にあるWheelSetups内を設定できます。
先ほど作成した前輪用のBPと前輪のボーンを指定して、
後輪用のBPと後輪のボーンを指定していきます。
※Vehicle Movement Componentを選択しないと出ないので注意!
車輪の設定を行ったら今度は車両のエンジン動作の設定になります。
こちらはエンジンの動作をトルクのカーブで再現しているのでカーブを作成します。
外部カーブを作成があるので作成してみましょう。
作成したらカーブの値を作成していきます。
値はそれぞれ下記となっています。
時間:0 値:0.5 時間:1000 値:1 時間:4000 値:0.8 時間:5000 値:0.5
値の設定が完了したら少し車両の重心を変更します。
Enable Center Of Mass Overrideにチェック入れて、
Center Of Mass Overrideを設定します。
設定が完了したら操作部分を作成していきます。
UE5.1からEnhanced Input方式なのでその方式でインプット処理を追加していきます。
入力アクションと入力マッピングを作成していきます。
今回は下記のように作成してみました。
※水色のものが入力アクションで黄色が入力マッピングです。
入力アクションに関しては下の画像のようになります。
ValueTypeはAxis1D(float)にしてます。
そのアクションをそれぞれマッピングしています。
今回は下記のような形でマッピングしています。
Wキー → アクセル Sキー → バック
A・Dキー → ステアリング左右 Bキー → ブレーキ
EnhancedInputの設定は完了しているのでBPの方での処理を作成します。
EnhancedInputは最初にどのマッピングを活用するのかを設定する必要があります。
設定が完了したら今回使用するマクロも作成していきます。
こちらはバックしているかアクセルを踏んでるか判断して、
どちらを操作するかブランチで分けています。
実際に各種動作を行う必要があります。
アクセルとステアリングの動作を追加していきます。
バックの動作もこちらになります。
最後にブレーキ処理の作成になります。
アクセルかバックかチェックしておいて状態に応じたブレーキを設定します。
動かす部分の動作は以上です。
実際に動かしたのは下記の動画になります。
ただしタイヤが回転していないのでタイヤをアニメーションするようにします。
車の車輪のアニメーション設定
今まで説明した動作についてはあくまで車を動かす動作なので、
アニメーションは別で作成する必要があります。
先ほど指定した車のスケルタルメッシュを右クリックして、
Animブループリントを作成します。
作成したアニメーションBPに関しては親クラスを変更します。
Veで検索して「VehicleAnimationInstance」を指定してます。
あとはアニメーションの設定が終われば完了です。
MeshSpaseRefarenceからwheelControllerに動作を渡して、
コンポーネント情報を各種動作に渡してあげます。
最後にアニメーションBPを指定してあげます。
これで先ほどの車の車輪がアニメーションするようになります。
実際に完成したものは下記のようなものになります。
UE5で車の操作をChaosで処理を作ってみた。
— よしかた (@yoshikata_game) 2023年1月28日
動画の動きぐらいだったらだいぶ簡単にできるので、
後ほどブログにまとめます。 #UE5 pic.twitter.com/CgxKn9FxFl