複数の敵キャラクターを動かす前準備

そもそも、AIコントローラーでビヘイビアツリーを呼び出しているので、敵キャラクターが何体いようが、それぞれ個別に指定された動きをしてくれるはずです。

ということで、レベル上に2体の敵キャラクターを配置して、それぞれに巡回ルートを設定してあげれば良いだけです。

これだけで、敵キャラクターはそれぞれビヘイビアツリーの処理に従って単独で動作してくれます。

でも、それだけでは面白くないので、ビヘイビアツリーは同じだけど、キャラクター毎に個性を与えてみたいと思います。

せっかちさんと、のんきさん

今回はビヘイビアツリーのサービスという処理を使って、プレイヤーを見つけた敵キャラクターの歩行速度を変えてみようと思います。

そこには、敵キャラクター毎の個性を設定しておき、一人は走りだすけど、もう一人は走らないようにしてみましょう。

まずは、ビヘイビアツリーから「新規サービス」を2つ作成します。名前はそれぞれ”BTS_OnPatrol”と”BTS_OnChase”としました。(「新規サービス」をクリックした時に一覧が表示された場合は”BTService_BlueprintBase”を選択して、新しいサービスを作成してください)

BTS_OnPatrolのロジックは以下の通りです。

BTS_OnChaseのロジックは以下の通りです。

ロジックとしてはとても単純で、AIが操作しているPawn(Controlled Pawn)を敵キャラクターにキャストしたうえで、CharacterMovementコンポーネントのMaxWalkSpeedを変更しているだけです。

ビヘイビアツリーにサービスを登録する

巡回に入った時、追跡に入った時、それぞれ上記で作成したサービスを呼び出すようにします。

巡回時のSelector、追跡時のSequenceノードに対して右クリックでサービスと登録することができます。それぞれ巡回用のサービスと、追跡用にサービスを登録してください。

プレイ

早速プレイしてみると、プレイヤーを発見した敵キャラクターが走って追跡してくるようになりました。また、見失うと速度が落ちる事も確認できました。それぞれのサービスが正常に動いていることが分かります。

後は個性を付けるだけです

まずは、敵キャラクターのBP(BP_AICharacter)を開き、プレイヤー追跡時に走るか否かのフラグを追加して、インスタンス編集を可能としておきます。フラグの名前は”IsChaseRun”で、フラグなのでBoolean型で定義しました。

そして、レベル上に配置している敵キャラクターのうち、一体だけこのフラグをTrueにしておきます。インスタンス編集を有効にしているので、レベル上の敵キャラクターを選択して、デフォルト欄からIsChaseRunにチェックを入れるだけです。

最後に、ビヘイビアツリーのサービスで歩行速度をアップさせていた処理に対して、作成したフラグを見るように修正します。対象は”BTS_OnChase”ですね。

この後、”BTS_OnPatrol”にも条件を入れても良いのですが、今回は省きました。(デフォルトの歩行速度と同じなので)

再度プレイ!

動画を見てもらうと分かりますが、一体は走ってくるのに、もう一体は歩いて追跡してくるようになりました。

同じ敵キャラクターで、同じビヘイビアツリーを使っているのに、サービス処理で切り分けているので動きが異なる敵キャラクターを作成することが出来ました。

No responses yet

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です