シンプルなタワーディフェンスゲームを作る 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に変更します。

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

コメント
教材ありがとうございます!使ってます
ただ、Part10が見当たりません…
コメントありがとうございます。
教材を使っていただき嬉しいです。
すみません、Part10を一時非公開にしておりました。
公開しましたのでご確認下さい。