複数の敵キャラクターを動かす前準備
そもそも、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