GASPのALS版をもとに、モーションマッチで華麗に障害物を乗り越えるアクロバティックな敵キャラをつくりましょう。
遊べる完成形はこちらで公開中 yossi40-100/GASP-ALS: Game Animation Sample with ALS Layering
本記事はビヘイビアツリー入門チュートリアル動画のラスト、細かい仕様調整の説明です。
課題点の確認
追いついているのにビックリするのは変ですし、巡回中に銃を構えた姿勢維持は疲れますね
クールダウンは固定時間なので規則正しいタイミングで撃ってくるのも多少ばらつかせて人間っぽくしたいです
このへんをそれらしくしていきましょう
前半でも言いましたが、驚く処理をクールダウンで動かないようにしているところは少し無理があります
シーケンスで1回実行したら、それ以降の処理を繰り返すことで再実行しない形に改良しましょう
ちなみに極め本では、状態変更処理が実際変えたら成功、すでにその状態だったら失敗と、タスクの成否を管理することで、走り中に走りに切り替えるのはタスクが失敗することで、セレクターの次の処理に進むっていう構造にされていました。
「状態変更タスクはもともとその状態だったら失敗する」というツリー上ではわからないルールを関係者が把握しておく必要がある構造なので、個人的にはイマイチ感があります
※ルールとして決められていれば問題ありませんし、本記事のループ作戦が万能というわけでもないのでご参考まで
見つけて驚くのは1回だけ
今回は別案として、1回だけ動かしたい処理とそれ以後繰り返したい処理をシーケンスで並べつつ、無限ループで見える化します
追いかける条件のデコレータはそのままで、セレクタをシーケンスに置き換えます。(トップにシーケンスを追加し、Blackboard Based Conditionを引っ越し)
これで、プレイヤーを忘れたら緑の追いかけ処理全体が中断される、走りモード切り替えとビックリするリアクション後、立ち止まって攻撃するか、移動しながら攻撃するかという基本的な流れは今まで通りで、
クールダウンで最初の状態変化が5秒間は失敗するので、トップに追加したシーケンスも失敗して、5秒間は追いかけタスクが動かないという仮状態です。
クールダウンは消します。すると、失敗しないので、1番の条件が満たされている限り、4番5番と6番以降の処理が動きます。
が、4番5番は毎回ではなく、発見したとき1回だけやりたい処理なので、セレクターが動き出したら「loop ループデコレータ」でここを繰り返す作りに変更します。
詳細欄のInfinite Loopにチェックを付け、3回だけじゃなくて無限ループにします
これでひたすらここをぐるぐる繰り返すようになります
撃つタイミングはばらつかせる
また、クールダウンは固定時間なので規則正しく撃ってくるので、クールダウンで失敗させるのではなく、シーケンスとウェイトを使ってばらつかせます
0.5±0.2秒で、0.3から0.7秒の間隔にしてみましょう
移動しながらの部分も同じ構造としたいところですが、ウェイトだと失敗しないのでトラバースしなくなっちゃいますね
では、セレクタでどちらかをやってからウェイトかなとこれも一見よさそうですが、クールダウンが0.5秒で、ウェイトが0.5秒だと、毎回クールな状態で動いてしまいますね
あーでもない、こーでもないと組み替えながら考えた結果、両方にクールダウンつけてウェイトはなしに落ち着きました
※ツリーが小さくなって整理できただけで、追いかけ中の発射がばらつかせられていませんが。。。
※さらに、クールダウンの下にシーケンスでウェイトを入れてばらつかせることはできそうですが、クールダウン自体の成否との関係性や、トラバースより攻撃を優先したいなど、もう少し考える必要ありそうです。
確率で成否が変わるタスクやデコレータなどを作ってクールダウンと置き換えるほうが考えるの楽かも。。。
撃ちたいときだけエイム
ではエイム状態を設定解除するタスクを作って一区切りです
歩きのコピペで作れるでしょう
CBP_AI > イベントグラフ
Add Custom Event で SwitchAim を作ります。フラグはエイムに置き換えます
あとはBTタスクもコピペ(コンテンツドロワーからBTT_SwitchWalkを複製)で作りましょう
BTT_SwitchAim > イベントグラフ
これで準備OKです
BT_AI でつかいましょう
これで撃つ前にエイム状態になりますね
あとは追いかけている最中は基本は解除しておいて、走りながらの攻撃時もエイムが必要です
トラバースのほうに解除も入れておいたほうが無難ですかね。であれば、上に入れたのはいらないで、整理するとこうですね
動画のときにはなかったコメント追記やノードの表示名も変えて見やすくしてみました
中断時にそのままの場合があり得るので、巡回の時も解除が必要ですね。ついでに歩きモードへの切り替えも追いかける側と同じつくり(シーケンス+ループ)にします。
これで追いかけのデコレータに割り込まれるまで歩き続けますね
では、本日はこれで完成とします
BT_AI全体
TODO
銃の向き直したらかなりムズい対戦ゲームになりそうな予感がします
あとは最近ヒストリア様のブログ記事で、敵キャラの難易度管理の話もあったので、体力ゲージなどの表示と、その件などを入れたら、ひとまずグレーボクシングとしては完成レベルかなと
一旦お疲れさまでした。ご覧いただきありがとうございました。
※連載はまだ続きます。
コメント