|
執筆バージョン: Unreal Engine 5.7
|
今回は、UE5.6で追加されたTopDownテンプレートのバリアントオプション「Strategy」を改造して遊んでみましょう!
プロジェクトを作ろう!
「ThirdPerson」テンプレートを使用して、任意の名前でプロジェクトを新規作成します。
Variantsオプション「Strategy」の選択を忘れないようにしましょう。

プレイしてみよう!
プロジェクトが開いたら、[Content] > [Variant_Strategy] にある「Lvl_Strategy」を開きます。

プレイして内容を確認してみましょう。
① WASD or 右クリック長押し で視点移動

② Q,Eキー or マウスホイール でズームイン/アウト

③ キャラクターをクリックで選択

④ Shiftキーを押しながらクリック or 左クリックしながらドラッグ で複数キャラクターを同時選択

⑤ 右クリックで、選択中のキャラクター全員が指定した地点に移動

⑥ 画面中央部分の屋根を透過して中が見える

色々な機能がありますね!
機能を追加しよう!
今回は、敵キャラクターを追加して、味方キャラクターが近づくと攻撃するようにしてみます。
①敵キャラクターの追加
まずは、敵キャラクターのブループリントを作成していきましょう。
Characterクラスでブループリントを新規作成して、名前を「BP_Enemy」としました。


敵キャラクターには、攻撃によってダメージを与えるようにしたいので、「BP_Enemy」を開いて以下の2つの変数を追加します。
- Float型の「MaxHP」 ※初期値「10」
- Float型の「CurrentHP」

「MaxHP」はInstance Editable(インスタンス編集可能)にチェックを入れておきましょう。
初期値はお好みの数値で構いません。

敵キャラクターの見た目を設定していきます。
Conponentsタブの「BP_Enemy」を選択して、Derails内のSkeletal Mesh Assetを編集します。
今回はMannyを設定しました。
そのままだとメッシュの位置がカプセルコリジョンと合わないため、画像のように修正しました。

HPを可視化したいため、TextRenderコンポーネントを追加します。
名前を「HP」としました。

見やすいように、お好みで位置や色、サイズを調整してください。
※テキストが常にカメラの方向を向くようにするとかなり見やすくなります。
必須ではないためここでは解説しませんが、やり方を調べてぜひ挑戦してみてください!

イベントグラフに移動して、「Event BeginPlay」に最大HPを設定する処理を追加しましょう。

②味方キャラクターが攻撃するようにする
次は、味方キャラクターが敵に近づいた時に攻撃するようにしていきましょう。
[Content] > [Variant_Strategy] > [Blueprints] の「BP_StrategyUnit」をダブルクリックして編集画面を開きます。

ビューポートを開いて、SphereCollisionコンポーネントを追加します。
名前を「AttackRange」としました。

このコリジョンにオーバーラップした敵を攻撃するようにしたいので、サイズを大きめに調整しましょう。
今回はSphere Radiusを200に設定しました。

「AttackRange」のDetails欄を下までスクロールして、「On Component Begin overlap」の+ボタンを押します。

イベントグラフに移動するので、追加されたノードから以下の処理を追加します。

続いて、カスタムイベント「OnAttack」を作成して以下の処理を追加します。

「AttackRange」のDetails欄に戻り、今度は「On Component End overlap」の+ボタンを押します。

以下の処理を追加しましょう。

最終的には以下のようになります。

「BP_Enemy」のイベントグラフに戻り、ダメージを受けてHPが減る処理を追加していきます。

③プレイしてみよう!
一通りの追加が完了しました!
レベル上に敵を置いてプレイしてみましょう。

無事、敵に近づいたら味方が攻撃を始めましたね!
敵のHPが0になったら消えることも確認できました。
まとめ
「Strategy」のテンプレートを簡単に改造して遊んでみました。
実は、今回の実装では複数の敵が攻撃範囲内に入った際に上手く動かないなど、課題が残っています。
それらの解消に取り組んでみるのも良いでしょうし、敵も動いたり攻撃したりするように機能を追加してみたり……まだまだやれることがたくさんありそうです!
ぜひ色々試してみてください!