ここでは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など独自に実装することになります。
