[Unreal Engine 5]キャラクタを一定の頻度で出現させる

Unreal Engine 5

シンプルなタワーディフェンスゲームを作る part11

こちらのようなシンプルなタワーディフェンスゲームを作っています。本記事では「timer Event」を使った「敵ユニット」一定の頻度で出現させる方法を紹介します。

「敵ユニット」を出現させるオブジェクトを作る

「敵ユニット」を出現させるオブジェクト「敵ユニットスポナー」を作ります。

新しいフォルダ「enemy_spawner」を作ります。「敵ユニットスポナー」関連の部品はこちらに入れていきます。
フォルダ上で右クリック→「ブループリントクラス」→「pawn」を選択し、作ったブループリントの名称を「BP_enemy_spawner」とします。

「BP_enemy_spawner」に開きイベントグラフに移ります。

「Event BeginPlay」の続きに「Set Timer by event」​を追加し、「Time」を1.0に設定​「Looping」にチェックを入れます。
「Add Custom Event」​で新しいイベントを作成し、名称を「spawn_enemy」とします。赤い四角のピン「output Delegate」を「Set Timer by event」の「Event」ピンに接続します。
「spawn_enemy」の続きに「Spawn AI From Class」​を追加して「Pawn Class」を「BP_Enemy」に設定​し「Behavior Tree」を「BT_Enemy」に設定します。
「Get Actor Transform」​を追加します。「Return Value」ピンを右クリック→「構造体ピンを分割」​で出力ピンを分割します。「Return Value Location」を「Spawn AI From Class」の「Location」に接続​します。

「敵ユニット」を1秒間隔で出現させられるようにできました。
しかしこのままでは「敵ユニット」同士が干渉して後ろに詰まった「敵ユニット」が「自軍拠点」にたどり着けません。

「敵ユニット」同士が干渉しないようにする

「敵ユニット」同士が干渉しない設定をします。

「BP_Enemy」を開きます。

「SM_Enemy」を選択​し、右の詳細パネルの「コリジョンプリセット」を「NoCollision」に設定します。

続いて「Capsule Component」を選択​します。
右の詳細パネルの「コリジョンプリセット」を「Custom」に設定し、「pawn」の「無視する」にチェックを入れます。

「BP_headquater」を開きます。

「SM_headquater」を選択​し、右の詳細パネルの「コリジョンプリセット」を「NoCollision」に設定します。

これでもう一度実行すると、「敵ユニット」同士が干渉せず​同じ場所に重なるようになります。

これで冒頭の動画のような振る舞いを確認することが出来ました。

おまけ:「敵ユニット」が到達する場所を調整する

「敵ユニット」同士が干渉しなくなりましたが、「自軍拠点」にめり込んでしまっているので「敵ユニット」の到達位置を調整します。

「enemy」フォルダ→「Task」フォルダに置いている「BTTask_chase_target」を開きます。
「AI MoveTo」の「Acceptance Radius」を100に変更します。

「敵ユニット」が丁度良いところで止まるようになりました。

コメント

タイトルとURLをコピーしました