仮想空間VR:AIThirdPersonControllerをあれこれいじってみた

こんにちは (‘ω’)ノかずまなぶ です。

わたしのVR空間にだんだんと人が集まってきました。紹介します。

アイドルのおっかけ

  1. 先日紹介しました、アイドルのおっかけです。ユニティちゃんはロコモーションなのでPCのキーボードで自由に動けるのですが、それをずっと追っかけていきます。
  2. おっかけはAIThirdPersonControllerプレハブでAICharacterControlスクリプトのTargetをWalkTargetに設定しています。
  3. walkTargetはEmptyの名前を変えただけのオブジェクトです。追跡対象であるユニティちゃんの子オブジェクトにいれています。
  4. 言い換えれば、おっかけはユニティちゃんではなく、ユニティちゃんの保有するWalkTargetオブジェクトに反応しているのです。
  5. 星白しずかのエナがいつもカビザシを見つめているような感じです。ランカ・リーのVウィルスだったり、バサラのアニマスピリチアだったりもします。解らなかったらスルーしてください。

石盤のおっかけ

  1. アイドルのおっかけを改良して、追跡対象をユニティーちゃんから、地面を這う石盤に変更した「石盤のおっかけ」です。
  2. ユニティちゃんのときは追跡対象のユニティちゃんの中にTargetを入れていましたので、今回は石盤(cylinderオブジェクト)にTargetを入れていると普通は思いますが、違います。
  3. AIThirdPersonControllerプレハブのAICharacterContorolスクリプトのTargetをWalkTarget_lookMoveToオブジェクトにし、LookMoveToスクリプトを適用しています。
  4. LookMoveToスクリプトでは、カメラ目線の始点座標とベクトルを調べ、そのベクトルの延長上に何かしらのオブジェクトがあり、それが地面(変数ground)だったら、その座標にWalkTarget_lookMoveToオブジェクトを移動させるのです。変数GroundにはInspectorパネルからGroundPlaneを適用します
  5. そして、目線によって任意に動かすことができるようになったWalkTarget_lookMoveToオブジェクトに対してはcylinderオブジェクトという実体を与えて(子にして)、目で見ることができるようにしました。
  6. ゲームを実行してみると、目線の先に常に石盤がいるかと思います。

うろちょろゾンビ

  1. ランダムに出現する見えないターゲットに向かってひたすら歩き続けます。ターゲットは5秒間隔で移動します。
  2. AIThirdPersonControllerプレハブのAICharacter ControlのTargetにWalkTarget_Randomオブジェクトを適用する。
  3. WalkTarget_RandomオブジェクトはRandomPositionスクリプトを持ちます。
  4. RandomPositionスクリプトがWalkTarget_Randomオブジェクトの座標を移動させます。

バイツァーダストの被害者

  1. 目線を合わせると、赤いパーティクルが体を包み3秒後に爆死!します。
  2. 何回でもリスポーンしますので、タイミングよくバイツァーダスト!と叫びましょう。要練習です。
  3. AIThirdPersonControllerプレハブのThirdPersonCharacterスクリプトには何もいれません。こいつは特になにかの目標に向かって移動する知能は与えていません。爆死能力だけです。AudioSourceに爆発音だけ入れましたが、機能していません。(課題です)
  4. EmptyからGameControllerを作ります。killTargetスクリプトとAudioSource爆発音をコンポーネントとして追加しました。AIThirdPersonControllerプレハブの中にGameControllerを入れておきましょう。
  5. killTargetスクリプトにはTarget , Hit Effect , Kill Effect , Time To Select , Score、といったいろいろなものをセッティングできるようにしました。
  6. killTargetスクリプトでは、カメラ目線をレイとし、レイが変数targetに当たっていたら、当たっている座標にEffiectを出し、設定時間経過後にkillEffectを出し、そのあとに新しい座標にリスポーンします。
爆死!(; ・`д・´)