プレイヤーを見つけて追跡するAIを実装する。
1. タスクを作成する
ビヘイビアツリー[BT_SamuraiTaisho]を開き、[New Task]の[BTTask_BlueprintBase]を選択して新しいタスクを作成し、[FindPlayerLocation]と名前を変更する。
Blackboard Key型の変数を[Vector]という名前で作成し、[Instance Editable]にチェックを入れておく。
そして下のようにブループリントを組む。
続いて同じようにもう一つ新しいタスクを作成し、[ChasePlayer]と名付ける。
下のようにブループリントを組む。
2. ビヘイビアツリー を編集する
前回作成してビヘイビアツリーの[Sequence]ノードの名前を[Go to Random Location]に変更する。
新しい[Sequence]ノードを作成し、[Chase Player]と名付ける。
そして下のようにビヘイビアツリーを組む。
次にブラックボード[BB_SamuraiTaisho]を開き、Bool型の[CanSeePlayer]というキーを作る。
そしてビヘイビアツリーに戻り、デコレーターを付ける。
デコレーターは[Selector]ノードにおいて、どの子ノードを実行するかの条件を設定するものである。
[Go to Random Location]を右クリックして[Add Decorator]>[Blackboard]を選択し、下のように設定する。
[Chase Player]ノードにも同じようにデコレーターを追加し、下のように設定する。
ただし、このままでは[FindPlayerLocation]ノードと[ChasePlayer]ノードで TargetLocation が更新されているので、敵キャラがブレるように見える。
そこで[Cooldown]デコレーターを追加し、[Cool Down Time]を「0.2」に設定する。
[Cooldown]はクールダウン時間が終了するまでノードまたはブランチの実行をロックする。
[Can't See Player]デコレーターを選択し、[Details]パネルの[Flow Control]>[Observer aborts]を「Both」にする。
3. パーセプションを設定する
AIコントローラー[CT_SamuraiTaisho]を開く。
[Components]パネルから[AI Perception]を追加し、下のように設定する。
次に、このパーセプションがプレイヤーキャラクターを検知するように設定する。
プレイヤーキャラクター[Pawn_Player]を開く。
[Components]パネルから[AIPerceptionStimuliSource]を追加し、下のように設定する。
そしてAIコントローラー[CT_SamuraiTaisho]に戻り、下のようにブループリントを組む。
4. 敵キャラクターの回転を修正
今のままだと敵キャラクターがプレイヤーを追いかけて向きを変える時にカクつくので、修正する。
敵のキャラクタークラスのブループリント[Pawn_SamuraiTaisho]を開く。
[Components]パネルで[Pawn_SamuraiTaisho(self)]を選択し、[details]パネルの[Pawn]>[Use Rotation Controller Yaw]のチェックを外す。
そして[Components]パネルで[Charactoer Movement(Inherited)]を選択し、[details]パネルの[Character Movement (Rotation Settings)]>[Rotation Rate]>[Z]を「250」にして、下の[Orient Rotation to Movement]にチェックを入れる。
これでスムーズに回転するようになった。