テーマは敵キャラクターを動かそう ビヘイビアツリー編です
GASPのALS版をもとに、モーションマッチで華麗に障害物を乗り越えるアクロバティックな敵キャラをつくりましょう。
遊べる完成形はこちらで公開中 yossi40-100/GASP-ALS: Game Animation Sample with ALS Layering
本記事はメタルギアっぽく発見時に驚くリアクションをとらせる方法の説明です。
ビックリ!驚くリアクション
発見時にビックリさせたいと思います。AIキャラの頭上にテキストレンダリングを追加します
ウィジェットでこだわりたい人はそれもいいかと思います。
2024年11月の無料アセットゲットした人は
Hyper Outliner and Symbol Systemのやつもありますね
ここではだれでも無料でできる簡単な作戦とします
CBP_AI
テキストをビックリマークに変えましょう
ビックリできましたね。
たとえばこれを「zzz」とすれば眠い状態にできたり、音がして探索したけど見つからなかったときとかは「?」もいいですね
ここで色変更もできます
ずっと驚いているのもへんなので、デフォルトでは非表示(Visibleをオフ)にしておきます
あとは驚いたときにオンオフ切り替えてあげればよいでしょう
Visibleはブループリントからは、Set Visibility で変更できます
表示するかしないかは入力信号にして、、、いや、驚くのやめるところまで制御しなくても時間でいい気がするのでサプライズイベントに改名しておきます
CBP_AI > イベントグラフ
イベント実行直後にオンにして、あと効果音ラボさんの音も鳴らします
ボタン・システム音/決定ボタンを押す13
一応英語名に変えておきます
UE5.4くらいからMP3もそのまま取り込めるようになりました。それより古いバージョンではwav形式に変換してから取り込みましょう
Play Sound at Location でその場で鳴る設定にします。場所はActor Locationでいいですね。
ただし減衰の設定などしないと2Dと変わらないかもしれません
音を鳴らした後、Delayで3秒待ってVisibilityを再度オフに変更して非表示にします
ちなみにPlaySound2Dは鳴り終わるのを待たずに、鳴らし始めたら次の処理に進むので、音の長さは処理時間には関係ありません。
Delayは右上に時計のマークがついていて、このアイコンは、この処理が終わるまで次のノードに進まないことを意味します。
これで、イベント発生時3秒くらい驚いてくれます
驚くきっかけ
では、この驚くリアクションをプレイヤー発見時にやってもらいましょう。
ビヘイビアツリーで、走るモード切替のついでに変更もできますが、
素直に新しくタスクを作りましょう
新規作成 BTT_FindReaction > イベントグラフ
発見・リアクションっていう直訳でFindReactionって名前にしましたが、リアクションを探す処理みたいなへんな名前ですね。。。
ReactionToFindingActor みたいな名前のほうがわかりやすいかもです
BT_AI
親がシーケンスなので
発見したらまず走るモードに切り替えて、ビックリ表示してからこっち向かって走りつつ障害物を超えてくるのを試しましょう。
鳴りすぎですね
クールダウン
追いかける Move To は追いつくと成功終了するので、再度初めからスタートしちゃってすぐさま次のビックリが始まっちゃっています
これを解消するには、1回実行したらしばらく熱を冷めるまで再実行しないクールダウンを設定するということができます
デコレータを追加からクールダウンです
デフォルトは、1回動いたら5秒間は再実行されない設定です
試してみましょう。変ですね。
これはシーケンスにクールダウンを付けた結果、シーケンスが5秒間失敗するようになったため、その上のシーケンスも失敗になって優先度低い巡回のほうに切り替わったためです
クールダウンが失敗することを想定してセレクターにしましょう。
これで最初は5番6番のタスクでビックリして2番が成功終了します。それ以降は3番が失敗して7番8番が動くと。
ただし説明のために Cooldown を使ってみましたが、この作戦だと追いついた状態で5秒ごとにビックリしてしまうので、シンプルパラレルにループのデコレータを付けるなどの別案を検討しましょう。(後の記事でそこまでやっています)
コメント