ゲーム作りの合間に息抜きのゲーム作り パート7
ただいま製作中のゲーム! UnrealEngine4で『暁の航路』制作中(メインプログラマー:GAISUTO) Unityで『(タイトル未定)』制作中(メインプログラマー:ざわわ) UnrealEngine4で『大旗取合戦(仮タイトル)』(息抜き&学習用)
本職に影響がでないように製作するので結構スローペースになります。 原稿の合間に落書きを描いて、ゲーム作りの合間に息抜きでゲームを作って、仕事の合間はゲームをして息抜き。
——–本日!——– 『ゲーム作りの合間に息抜きのゲーム作り パート6』で作成したAIの振る舞いを変更せず、BPのみから、ビヘイビアツリー(以後、BT)とブラックボードを使う変更を行いました。
NPCBTTask_MoveはいろいろやってるうちにBTに用意されているMoveToを使うことになったので、破棄。
NPCキャラのBPのBeginPlayの後半を変更。 カプセルコンポーネントにいれているチームタグをNPC_AIControllerに送っているだけです。
NPC_AIControllerに送ったタグを変数にいれて、ブラックボードを使う宣言をして、ブラックボードにチームタグを書き込んで、ビヘイビアツリーを起動してます。 ブラックボードのチームタグはまだ使ってません。 今後どうするかは検討中。 NPC・NPC_AI・ブラックボードの3つにタグの変数をたらい回しにしてるのがあまり気持ちよくない。
ビヘイビアツリーが起動されたら、シーケンスの左から処理をしていきます。 FlagSearchで全フラグを調べて、向かうFlagを決める。行く先が決まったら、MoveToで向かう、決まらなかったらずっと調べ続けるという流れです。
NPCBTTask_Searchの中でTargetFlagBTにセットした値をブラックボードのTargetFlag(Flagクラス)にいれてます。
BlackBoardKeyにTargetFlagをいれてます。
NPCBTTask_Searchの中身。 AIからタグと本体を持ってきてます。 処理の中身は前回と同じです。
全部のFlagをみて、行く先が見つかったら、Success! 目的地に向かいます。 行く先が見つからなかったら、3秒まってfailure! 目的地を探し続けます。
~今後~ ブラックボードに、変数をインスタンス全域で同期させるチェックがあったからここにFlagクラス情報を持たせて、レベル上を毎回全部チェックしなくていいようにできないかな。 ここの変数に持たせたクラスが参照だったら、レベルBPで最初に全部突っ込んでおいて、あとはここを見続けるだけでいいんだ。 そうでなかったら、フラグが変更されるたびにブラックボードの値を書き換えにいく。 レベルBPやアクターからブラックボードの数値を書き換えにいけるのかなぁ
NPCユニティちゃんが自動で生成されて、チームタグを召喚地点によって変化するようにしたいな。