ここではUE マーケットプレイスにて販売している「Drone Model & Game Template」の全機能を説明します。ドローンモデルは、Blueprintのみで構成されており、シーンに追加することで簡単に使用可能です。また、コンフィギュレーターとレースゲームに使用できるテンプレートが含まれます。
ドローンモデル
ドローンモデルの操作について
(ドローンの操作一覧)
Key入力 | Key |
---|---|
モーター 始動 / 停止 | F |
Up / Down | E / Q |
Left / Right | A / D |
Forward / backward | W / S |
Turn | Mouse |
3人称視点カメラ切替 | 1 |
1人称視点カメラ切替 | 2 |
Truckカメラ切替 | 3 |
サイドカメラ表示位置切替 | 4 |
カメラ Up / Down | C / V |
モーター 始動 / 停止
モーターを始動するには、ドローンが停止中に ‘F’ キーを押します。ドローンはモーター始動後にプロペラの回転が始まり、すべての操作が可能になります。
モーターを停止するには、ドローンが地面に着地しているときに ‘F’ キーを押します。
Up / Down
上移動は ‘E’ キー、 下移動は ‘Q’ キーが割り当たっています。
モーター始動後に上下の移動が可能になります。
Left / Right 、 Forward / backward
左移動は ‘A’ キー、 右移動は ‘D’ キーが割り当たっています。
前方移動は ‘W’ キー、 後方移動は ‘S’ キーが割り当たっています。
飛行状態でないと、前後左右の移動はできません。
飛行状態の判断は、Blueprint内の「JudgeGround関数」で確認しています。
前後左右の移動時は、ボディーが傾きます。
ボディーの傾きはBlueprint内の「BodyRotater関数」で実装しています。
Turn
マウスを左右に動かすことでターンが可能です。
3人称視点カメラ切替
‘1’キーでBlueprintで後方に設置された 3人称視点用カメラの視点に切り替えます。
「CM_CameraControllComponent」の「Change Owner Camera関数」で視点の切り替えを行います。

1人称視点カメラ切替
‘2’キーで1人称視点用カメラに切り替えます。
1人称視点用のカメラは、あらかじめ「CM_CameraControllComponent」の「Begin Play」で生成しています。

パラメータ 「Front Camera」 を “False” に設定することで無効にできます。
パラメータ「Front Camera Transfrom」で、生成位置を微調整できます。デフォルトではドローンの全面に設定されています。
「CM_CameraControllComponent」の「Change Front Camera関数」で視点の切り替えを行います。
Truckカメラ切替
‘3’キーでTruckカメラに切り替えます。
地面に固定されたカメラです。視点は常にドローンを追従します。操縦者の視点を想定しています。
Truckカメラは、あらかじめ「CM_CameraControllComponent」の「Begin Play」で生成しています。

パラメータ 「Track Camera」を “False” に設定することで無効にできます。
パラメータ「Track Camera Transform」で、生成位置を調整します。
「CM_CameraControllComponent」の「Change Track Camera関数」で視点の切り替えを行います。
サイドカメラ表示位置切替
‘4’キーでサイドカメラの表示位置を切り替えます。
‘4’キーを押すごとに、右下、右上、左上、左下、非表示の順に切り替わります。





モーター始動後にサイドカメラが表示されます。
「CM_CameraControllComponent」の「Change Side Camera関数」で表示の切り替えを行います。
サイドカメラは、ウィジェットを使用しています。
/Content/MMIX_DroneV4/DroneV4/UI/WD_DroneCamera

カメラ Up / Down
サイドカメラの視点を移動します。上移動は ‘C’ キー、 下移動は ‘V’ キーが割り当たっています。
パラメータ 「CameraMoveMin」で移動量の最小値を設定します。
パラメータ 「CameraMoveMax」で移動量の最大値を設定します。
パラメータ 「CameraMoveSpeed」で移動のスピードを設定します。
「CM_CameraControllComponent」の「Move Camera Capture関数」で視点の移動を行います。
ドローンモデルのブループリント
ブループリントは以下のフォルダにあります。
/Content/MMIX_DroneV4/DroneV4/Blueprints/BP_DroneV4

ブループリントの構成

CollBody | ドローンのコリジョン |
Body | ボディーのスタティックメッシュ |
BodyArm_XX | ボディーアームのスタティックメッシュ (*1) |
PropellerArm_XX | プロペラアームのスタティックメッシュ (*1) |
Propeller_XX | プロペラのスタティックメッシュ (*1) |
Trail_XX | Trailエフェクト(Niagara Particle System) (*1) |
BodyCamera | カメラのスタティックメッシュ |
SceneCaptureComponent2D | サイドカメラ用のシーンキャプチャコンポーネント |
SpringArm | Spring Arm Component |
Camera | 三人称視点用のカメラ |
FloatingPawnMovement | 移動用のコンポーネント。UE標準コンポーネント |
PropellerRotationComponent | プロペラの回転を制御するコンポーネント |
CameraControllComponent | カメラを制御するコンポーネント |
MaterialComponent | マテリアルを制御するコンポーネント |
*1 FL:前方左 FR:前方右 RL:後方左 RR:後方右
ブループリントのパラメータ
ドローン本体

[ Body Rotater ] | |
Default Relarive Rotation | ドローンのローテーション初期値。ボディーの傾きを計算する際に使用する。 |
Rotate Max Angle | 前後左右へ移動時に傾く最大角度 |
Rotate Speed | 前後左右へ移動時に傾く最大速度 |
[ Drone Param ] | |
Distance to Ground | ドローンから地面までの距離。飛んでいるか判定する際に使用する。 |
Effect Display | ドローンのTrailエフェクトの表示・非表示 |
カメラコントロールコンポーネント

[ Track Camera ] | |
Track Camera Transform | トラックカメラの位置 |
TrackCamera | トラックカメラ有効・無効切替 |
[ Scene Capture Component ] | |
CameraMoveMin | サイドカメラの上下移動最小値 |
CameraMoveMax | サイドカメラの上下移動最大値 |
CameraMoveSpeed | サイドカメラの上下移動スピード |
[ Front Camera ] | |
FrontCamera | フロントカメラ有効・無効切替 |
FrontCameraTransform | フロントカメラの位置 |
プロペラローテーションコンポーネント

[ Propeller Component ] | |
Propeller Auto Start | プロペラの回転を自動スタートするか? “True” にするとモーターを始動に関係なくプロペラが常に回転する |
propeller Max Speed | プロペラの回転スピード |
AccelerationMaxTime | プロペラが最大回転数になるまでのスピード |
DecelerationMaxTime | プロペラが停止するまでのスピード |
PropellerSound | プロペラ回転の効果音 |
マテリアルコンポーネント

[ Material Component ] | |
Material Instance | マテリアルインスタンスを設定する |
Type No | “1:TypeA 2:TypeB 3:TypeC”を表す |
Color No | ”1-4″ を表す |
「Material Instance」はMap型の配列で定義されています。KeyはName型、ValueはMaterial Instance型です。

使用する Material Instance を特定するために、「Type No」「Color No」よりKey文字列を作成します。 「Type No」 + “_” + 「Color No」 で編集され、「Type No」はNoにより文字列に変換され、 「Color No」は ゼロパディングの2桁に編集されます。
例えば、「Type No」が “1” で、「Color No」 が 2 の場合、”TypeA_02″ となります。
地面との飛行中判定について
飛行状態の判断は、Blueprint内の関数「JudgeGround」で確認しています。
「JudgeGround」 では、LineTraceByChannelで地面との距離を判定します。DroneParam の Distance to Ground パラメータが距離の基準となります。
コンフィギュレータ テンプレート
機能説明
コンフィギュレータのテンプレートです。ドローンメッシュのマテリアルを変更する機能が実装されています。TypeボタンもしくはColorボタンを選択すると、ドローンのマテリアルが変更されます。
コンフィギュレータを開いた際に流れる演出は、シーケンサー「LS_Configurator」を使用しています。

Blueprint説明
コンフィジュレータのUIは以下のウィジェットで定義しています。
/Content/MMIX_DroneV4/Template_Configurator/UI/WD_Configurator

タイプおよびカラーのボタンを押下すると、それぞれのOnClickedイベントが呼ばれ、ドローンのBlueprint「BP_DroneV4」「CM_MaterialComponent」の「changeMaterial関数」が呼ばれます。
このTempleteでは、変更した 「Type No」「Color No」は保存しませんが、実際の実装では自身の
プロジェクトに値を保持する必要があります。例えば、GameInstanceなどのグローバルな場所に保持し、ゲーム中のドローンは、そのGameInstanceの値を使ってマテリアルを変更する必要があります。
レースコース テンプレート
機能説明
ドローンレースのテンプレートです。ドローンが飛行するコース、アイテムを取得する機能が実装されています。
コース
コースはレベルデザイン用のブロックで作成されています。

アイテム取得と得点

アイテムはブループリントで実装されています。
/Content/MMIX_DroneV4/Template_RaceCource/Blueprints/BP_Power

アイテムにドローンがオーバーラップすると、BeginOverlapイベントによりアイテム取得処理が実行されます。

アイテムごとに得点を設定することが可能です。Blueprintのパラメータで設定できます。

スコアの値が得点に加算されます。得点のウィジェットは以下になります。
/Content/MMIX_DroneV4/Template_RaceCource/UI/WD_GameScreen

スコアを加算する処理は、レベルプリントで実装されていますが実際のゲームではGameModeなど独自に実装することになります。
