先日の半額セールでいっぱいアセット買ったので、アセットのレビューします。
実際に買った価格は1/2です
FSM AI Template
昔買ってこりゃ性能いいなと思ったけどAIがついてなくて塩漬けにしてたInvector Third Person Controller、
いつのまにかAIを実装できるアセットがリリースされてました。(去年夏からあったのか)
サンプルシーンは、
・NPCアクション

ぼーっとしてるNPCがいて、発砲すると音に反応して銃を取りに行ってその後高台まで移動、
こちらを狙ってきます(すぐは撃ってこない)逃げるとちょっと遅れてまた狙ってくる

死角を利用して後ろに回ると、こちらを見失います
・NPCアリーナ
銃と剣で集団戦闘するのを見物します。たまに勝手に転落死するやつもいる


スタート時に少しずつ登場してきて、死んだら(その数を数えてて)増援が来ます
・NPCカバーアクション

敵と味方のNPCが複数いて、障害物に身を隠しながらドンパチします。
グレまで投げてくる。死んだら増援が来る。かなりちゃんとゲームしてる

障害物にはカバーエリアとカバーポイントの2つのコンポーネントをアタッチして、NPCにカバーコンポーネントがアタッチされてるとカバーするようです。
プレイヤーがカバーできるのかは不明。(確実にそれやりたかったら、カバーシューターTPCがあります)
・NPCの感情

全員素手で、歩いてるNPCを殴ると逃げる/反撃します。
感情のアイコンが頭上に出ます
・NPCのスポーン
歩いてるNPCを攻撃するとスイッチに向かい、倒す前にスイッチを押されるとポータルから増援が来ます。押したやつはその後逃げる


わー便利そう…!!!
AIのエディタも、わかりやすい…いや、ビヘイビアツリーじゃなくてFSMなので、多少わかりにくいかも

デバッグエディタ付きでプレイ中確認できるのは便利ですけど。
AIの種類は、
Add Health 回復する
Disable Weapon 武器を外して素手になる
Enable Weapon 武器を装備する
patrol パトロール
とか…上メニューInvextor>FSM AI>FSM Behaviorから自作で増やせます
まあ、わからなかったらサンプルのキャラのテンプレート丸写しできるんじゃないかな…見張りに射撃に近接に非武装市民と揃ってれば、大抵のTPSの体は実現できるのでは。
その他
・キャラにカスタムしたラグドールを半自動でセットアップする、射撃武器・近接武器を作成するなどのウィザードがついてます。インベクターはこのウィザードが強力で快適です。
(追記:)インベクター以外のキャラクターコントローラでもこのラグドールは使えました。
何らかの方法でアニメータの割当を無効にすると-例えば後述のSimple Triggerで、衝突イベントからanimator>bool enabledなどで、ラグドールがききます。オンにすると戻ります。

↑Playerタグをつけた箱をキャラが立つコライダーに接触させるとラグドールして、離れると戻ります
・プレイヤー用体力ゲージつきFPSコントローラと腕モデルがついてます
・障害物はただ置いてあっても移動は遮るけど射線と射撃は遮ってくれず、レイヤーでBlockAIRayCastあたり選んでAI ShooterコンポーネントのDitectionに登録すると、視界を遮る障害物として認識されます。草むらとかカーテンとか、移動は遮らず視界は遮るものがあるとゲームっぽくなりますね。
・パトロールの巡回場所の指定は、FSMのAIとはまた別にWaypointというコンポーネントがシーンに必要で、NPCのAI ShooterコンポーネントのWaypointで座標を指定する必要があります。(インベクターTPCの方の標準機能)、
パトロールはFSMのAIとは別系統で制御してるので、地形が入り組んでたらAIとは別の調整も必要でしょう。
地形の認識にはUnity標準機能のナビメッシュを使ってます。地形をいじったら更新しないとキャラが地形を認識しません。
・キャラクターコントローラで使うけど、単独でも機能できる細かいスクリプトがついてきて、
上メニューからアタッチできます。
Simple Trigger

オブジェクトにアタッチすると、ボックスのトリガーコライダーが自動でつけられて、
タグとレイヤーで識別した何かが接触すると発動/離れると発動の2種類のイベントが操作できます。
つまり、スクリプトを書かずしてある程度のイベントが操作できます。 (訂正:)これをアタッチすると自動でボックスクライダーがアタッチされます。それで判定するようです。
オブジェクトにRigidbodyが必要です。コライダーはトリガーでなくても効きました
コライダーで発動ということは、特定のゾーンに行くと敵が湧くとかステージクリアとかの使いみちですかね。
Event with Delay
ディレイつきのイベントシステムです。
外からイベント操作すると扱えるやつです。単位は多分秒
c#は一定時間待って実行、というのやろうとするとコルーチンとか不毛にめんどいんですっけ
Rotate
アタッチしたオブジェクトが単に回転します。
背景オブジェとかおちてるアイテムとか目立たせるやつです。staticになってると機能しません
Look At
オブジェクトがカメラの方をゆっくり向きます。複数のカメラがあっても指定できないようです。ビルボード的な使い方するのかな?
Destroy
Derayのカウントの後自分を削除して、かつ何らかのイベントを作動させられます。
非アクティブにして、外からイベントで作動させて使うやつです
Instantiate
プレハブを指定して一つだけ生成します。位置は指定できず、実行するフラグが付いてるのみで、外からイベントで作動させて使うやつです。スポーナーとして複数生み出せるでもなく、装備武器のドロップとかに使うのかな?
Set Parent
アタッチしても何も見えず操作できませんが、指定したオブジェクトの子にする、親子を解除する、などのイベントが入ってます。外からイベント操作すると扱えるやつです。拾ったアイテムを手に装備とかに使うのでは
Play Random clip
登録した複数のオーディオをランダムに一つだけ再生します。微妙に違う音を出すと都合がいい足音なんかに使うやつかな。便利そう
Reset Trasnform

スタート時の位置を記録してて、そこに戻します。非アクティブにしてイベントで作動させるやつです。
MessageSender/Reciever

不明です。外部のスクリプトに命令できるというSendMessageを、テキストエディタを開かずして可能にするんじゃないかと予想します…じゃあRecieveMessageは?
・できるだけスクリプト書かなくて済むように頑張ってるんだなーと感じました
うまくおまけスクリプトを使えば、スコア計算やシーンチェンジのアセットとやり取りして、ノンコードで本格ゲームが作れるのではという気にさせてくれます。
マニュアルは実質pdfなので翻訳できない…
https://www.invector.xyz/aidocumentation
・互換性ですが、2018.4では正常に動いたけど、2017.4だとカバーだけ機能しませんでした。インベクターTPCの方は2017.4でも正常に動きますが、FSM AIがなにか上書きするのか、挙動が変でした。
(かたやレビューでは2019に対応してねーから星1つとかつけられてて、無体な)
このアセット、AIだけといわず射撃と近接のNPCまで入ってるので、これだけでもいいのかな?と思いましたが
どっこい、キャラを動かすのに大量のコンポーネントをセットアップする必要があって、そのキャラクリエイトのウィサードがはいってないです。
最低限のモーションしかない、コンボ技を出すコントローラもないので、別途キャラクターコントローラをお買い求めくださいということのようです。
仕様的に、別のキャラクターコントローラにこのAIが取り付けられるかは不明。難しいかも。
※シューターコントローラは、ベーシック・メレーも込みの全部のせです。ダブリ購入には注意
スイミングなどのアドオンは入ってません