UE4ゲーム制作入門十八日目

一人UE4ゲーム制作入門アドベントカレンダー十八日目です。

今日はボスのAIを組みました。

全体はこんな感じです。

ボスのビヘイビアツリー

BTTask_CheckFlg

このタスクではAIコントローラに作った2つのフラグをブラックボードに反映しています。

それぞれのフラグの説明ですが、

isAttack : 攻撃モーションに移れるかどうか

isNextAct : 次のアクションを決める処理に移れるかどうか

になっています。これらが別れてる理由はあるのですが、今日は実装できてないので平日のどこかで説明すると思います。

フラグの管理がなんだか面倒になってる理由ですが、アニメーションの開始終了イベントとかをAIで受けて、フラグを反映させる方法として、これとブラックボードの値を直接AI側から変える方法を思いついたのですが、個人的に初期化以外でブラックボードの値をビヘイビアツリーからいじりたくなかったのでこうなりました。

BTTask_CheckFlg.png

セレクターの下にいきます。こっちは次の行動を決めたり攻撃モーションへの移行を示してます。

左側から行きましょう。こちらは次の行動を決めるツリーなため、isNextActが真のときにのみ実行します。

ビヘイビアツリー2

BTTask_GetLengthToTarget

プレイヤーとの距離をブラックボードのLength変数に設定しています

BTTask_GetLengthToTarget.png

BTTask_SetNextAct

次の行動を決めています。攻撃前には一回しか決める必要がないため、次の行動が決まったらAIコントローラのisNextActにfalseを入れています。

これで、攻撃が終わるまでは実行されなくなります。

行動の振り分けですが、遠距離攻撃と近距離攻撃で分けています。距離に関しては未調整ですが、とりあえず400以下なら近距離攻撃、それより大きければ遠距離攻撃となってます。

BTTask_SetNextAct.png

攻撃側のツリーに移りましょう。といってもこっちはほとんど中身が同じなので、説明事項はほとんどないです。下手したらタスクを別々に作る必要ないです。試す時間が(遊んでたせいで)なかったので、平日のうちの課題としておきます。

ビヘイビアツリー3

こちらのツリーは攻撃可能を表すフラグが立っていたら実行します。

BTTask_LookAtPlayer

確か前にも説明しましたが、プレイヤーのほうにRotationを向けるだけです。

先程のisNextActで設定したボスの次の行動に応じて攻撃アニメーションを実行させるタスクに移ります。

攻撃系のタスク

AIコントローラにある、指定した状態のアニメーションを実行する関数を呼んでいるだけです。それぞれ与えてる引数が違うだけです。これ多分タスク統一できるので後で直します。

BTTask_AttackNear.png

時間がやばいので細かい説明は明日の記事に回します。後半になって息切れ気味になって本当に申し訳ないです・・・。