スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

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

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

コメントの投稿

非公開コメント

プロフィール

shiratori00

Author:shiratori00
ゲームプログラミング頑張って勉強中です。

最新記事
最新コメント
月別アーカイブ
カテゴリ
Twitter on FC2
カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。