テーマは敵キャラクターを動かそう ビヘイビアツリー編です
GASPのALS版をもとに、モーションマッチで華麗に障害物を乗り越えるアクロバティックな敵キャラをつくりましょう。
遊べる完成形はこちらで公開中 yossi40-100/GASP-ALS: Game Animation Sample with ALS Layering
本記事は敵AIの状態をビヘイビアツリーから変更させる手順の説明です。
ステータス変更
走りっぱなしは疲れますね。巡回中は歩きで、追いかけるときは走る状態変化を行いましょう
タスクの作成
キャラクターの状態を変更するタスクを用意します
BT_AI 編集画面上部の「新規タスクボタン」から作ります。
このとき、2個以上タスクがあると選択モードになります。基本的にこのブループリントベースから作りましょう
アセット名はあとで改善して BTT_SwitchWalk としました。(歩きモードの切り替えタスク)
このタスクから直接キャラクターのプロパティ(状態変数)を変更することもできます。
が、プレイヤーはボタンを押して、入力イベントからキャラクターの状態を変更させますよね。
これと同じように、
AIが直接キャラクターの内部状態を変えるのではなく、あくまでコントローラで操縦しているというイメージがが美しい(理解しやすい)と思います。
AIコントローラが押すボタン代わりのイベントを用意して、AIは人間の代わりにそのボタンを押す
AIキャラクター自体に変更イベント作成
BP_AI > イベントグラフ
キャラクター側に変更イベントを作りましょう
汎用的なステータス変更イベントにして、何をどう変えるか入力で指定できるようにすることもできますがそうではなくて単純に歩きと走りを切り替えるイベントにしようか悩み中です。
それは一旦先送りしてまずは変える対象の情報を調べましょう
歩きや走り、Gaitゲイト(歩行様式)はそれっぽい候補ですがちょっと目的と違いますね。あとは
入力/Character Input State 変数のWants To Walk が歩かせたいフラグです
プレイヤーだとCtrlキー押したときにこのフラグいじっていたので最有力かなと
今回は歩きと走りの切り替えイベントということにしておきます
構造体なのでいったんゲットしてセットメンバーで値を変えましょう
歩きモードにするか走りモードにするかはイベント分けるの面倒なので入力にしましょう
入力ピンから線を引っ張って、カスタムイベントノードに重ねると、同じ名前・データ型の出力ピンが簡単につくれます
ではタスクに戻ってこのイベントを呼び出す処理を書きましょう
タスクから状態変更イベントを発動
BTT_SwitchWalk > イベントグラフ
ポーンクラスではなくCBP_AIに作った処理なのでキャストが必要です
どっちに変更するかは入力にしたいので、Wants to Walkピンから変数に昇格させて目玉を開きましょう
最後にFinish Executeを忘れずに
これを忘れるとタスクがずーーーーっと終わらない強制割り込み待ちになります
ビヘイビアツリーで利用
BT_AI
追いかけるときは走りモードにしたいので2番のMove Toの左に今作ったタスクを追加し優先順2番とします
巡回する前に歩きに切り替えたいので、5番の位置にも追加し、こちらは詳細欄でWants to Walkをチェックつけます。
コメント