再現手順
[検証方法]
TestHitDecelMapを開き再生することで検証を開始します。
検証の条件を変更する場合はマップに配置されたBP_TestManagerを編集します。
TestManager>TestEnv以下のパラメータを編集することで検証の条件が変化します。パラメータは下記の通りです。
・Name :検証に用いるアクタの名前
・LaneLocationY :検証用アクタの検証開始位置のY軸のオフセット
・BotClass :衝突の検証に用いるアクタ(Vehicle)
・BotInitLocationX :BotClassで指定したアクタの検証開始位置のX軸のオフセット
・BotInitLocationZ :BotClassで指定したアクタの検証開始位置のZ軸のオフセット
・BotEndLocationX :BotClassで指定したアクタのX座標が指定値を超えた場合に検証をリセットする
・BotLocationRandomRangeY:BotClassで指定したアクタのY座標を指定値の範囲(-指定値~+指定値)で検証開始時にランダムにずらす
・PropClass :衝突の検証に用いるアクタ(軽量な物理オブジェクト)
・PropLocationOffsetX :PropClassで指定したアクタの検証開始位置のX軸のオフセット
・PropLocationZ :PropClassで指定したアクタの検証開始位置のZ軸のオフセット
基本的には BP_WheeledVehiclePawn と BP_WheeledVehiclePawn_DisableCCD の切り替えのために BotClass のみ変更して検証を行います。
その他のパラメータは微調整用です。
[追加/変更したアセット]
Map
・TestHitDecelMap:検証に使用したマップ。Template_Defaultをコピーして作成。
GameMode
・BP_TestHitDecel_GMB:TestHitDecelMapで使用しているゲームモード。
PhysicsAssets
・SportsCar_PhysicsAsset:すべてのCCD機能を有効化。
・SportsCar_PhysicsAsset_DisableCCD:SportsCar_PhysicsAssetからコピー。CCDの機能を無効化したPhysicsAsset。
SkeletalMeshes
・SKM_SportsCar_DisableCCD:SKM_SportsCarからコピー。SportsCar_PhysicsAsset_DisableCCDをPhysicsAssetとしてセットしたSkeletalMesh。
StaticMeshes
・SM_BoxProp:エンジンのモデリング機能で生成した見た目通りのコリジョンを持つシンプルなBox。
Blueprints
・BP_Observer:カメラを持つだけのポーン。撮影用。
・BP_PropBase:Vehicleと衝突した時に自身の物理、コリジョン、見た目を無効化する機能を持つアクタ。
・BP_PropBox:BP_PropBaseを継承したアクタ。軽量(1kg)の物理オブジェクト。
・BP_TestManager:TestManagerを継承したアクタ。テスト管理用のアクタ。検証に用いるVehicleや衝突用の物理オブジェクトを指定する。
・BP_WheeledVehiclePawn:WheeledVehiclePawnを継承。SkeletalMeshにSKM_SportsCarを設定。このBPのCCDは有効化。160km/hまでAddForceする機能やデバッグ表示の機能を持つ。回転は全てロック。
・BP_WheeledVehiclePawn_DisableCCD:BP_WheeledVehiclePawnからコピー。SkeletalMeshをSKM_SportsCar_DisableCCDに変更。このBPのCCDは無効化。
[ChaosVehiclePluginについて]
ChaosVehiclePluginはエンジンに搭載されているものをプロジェクト以下のPlugins以下にコピーして編集し、使用しています。
変更点は軽量な物理オブジェクトに衝突した際にVehicleのCCDを無効化する対応の追加のみです。
エンジンのバージョンに応じて下記zipに格納されているChaosVehiclePluginに差し替えます。
・ChaosVehiclesPluginForEngine55_DisableCCD_archive.zip:UE5.5.4で使用
・ChaosVehiclesPluginForEngine56_DisableCCD_archive.zip:UE5.6.1で使用
デフォルトで使用されているChaosVehiclePluginはChaosVehiclesPluginForEngine56_DisableCCD_archive.zipに格納されていたものを使用しています。
[補足]
添付したパッケージはUE5.5.4のVehicleテンプレートから作成しました。
TestManagerはC++で実装しており、下記に保存しています。
TestHitDecel_Vehicle\Source\TestHitDecel_Vehicle\TestManager.cpp
TestHitDecel_Vehicle\Source\TestHitDecel_Vehicle\TestManager.h
検証の自動化の為にAddForceによる加速後を行っていますが、スロットル入力による加速後であっても減速は発生しました。