(この記事の使用環境: Unity5.4.2f2 Personal、Windows10


今回は、UnityのStandard AssetsのCharactersにある「AIThirdPersonController」(モデルのEthanさん付き)を使って、AIにプロ生ちゃんを追いかけさせてみました。
全画面キャプチャ 20170112 163106

こんな感じ。プレイヤーが動かすプロ生ちゃんを、AIのEthanが追いかけています。微妙に犯罪臭がしますね。。。


AIThirdPersonControllerにはNavMeshAgentがアタッチされているため、斜面をのぼり、ジャンプし、飛び降りることもできました。飛び降り(Drop Down)時のモーションは自然な感じですが、ジャンプ(Jump Across)時のモーションは要調整でしょうか。


さて、今回の設定です。

ProjectビューでImport Package>CharactersからStandard Assetsをインポートし、そのなかにある「AIThirdPersonController」をシーンビューに配置します。
全画面キャプチャ 20170112 165118

配置するとこんな感じ。トップにAnimator、Rigidbody、Capsule Collider、NavMeshAgentなどなどがアタッチされており、その下にモデルのEthanさんの体やら眼鏡やらがぶら下がっているのが分かります。
全画面キャプチャ 20170112 165356

動かしたいモデルをEthanから変更したい場合は、この前のThirdPersonControllerの記事と同様のやり方で、モデルをThirdPersonCharacter直下にぶら下げ、設定を行ってください。今回はEthanのまま使っています。

あとはインスペクタで、「AICharacterControl」スクリプトの「Target」に、このAIキャラが向かう場所を指定します。今回はプレイヤーが動かすプロ生ちゃんを追いかけさせるため、「ThirdPersonController」(プロ生ちゃんを動かすゲームオブジェクト)を指定しています。

また、NavMeshAgentコンポーネントおよびThirdPersonChatacterスクリプトのインスペクタで、AIキャラの移動速度などなどを設定できます。動作確認しながら調整すればよいかと思います。


最後に留意点。実はAIThirdPersonControllerはちょっとした段差でもつまずいて動作がおかしくなってしまいます(下の動画参照)。


これは、NavMeshAgentとRigidbody(IsKinematicでない)が併用されているために起こる現象ではないかと思います。Unityのマニュアルでは併用は非推奨とされているようです(少なくともver5.4では)。とはいえRigidbodyを外したりしてはうまく動きませんので、今回はこの問題が起こらないよう、地形づくりのほうを工夫しています。

今回は以上です。