この記事では、UnityのNavMeshAgentとPlayMakerを組み合わせて、STYLYシーンで目的地まで自動で移動する3Dモデルを作る方法を紹介します。NavMeshAgentを使うことで、複雑な動きを簡単に作れます。そのため、この機能を使うことで動きのあるアクティブなシーンを手軽に作れるようになります。
サンプル
今回作成するのは、3Dモデルが自動で他の位置に移動するシーンになります。
以下のシーンでは、NavMeshを使うとどのような動きが作れるのかを確認できます。
NavMeshとはAIを使用して、シーン内を移動する3Dモデルを作れるUnityの機能の一つです。
目的地に移動させるだけではなく、道中の動きを細かく設定することも可能です。また、障害物を避けるなど複雑な動きを追加することも出来ます。
今回は、この機能を使ってCapsuleがSphereの位置まで障害物を避けながら向かっていくというシーンを作成します。
この記事ではPlayMakerというアセットを使用します。そのため、事前にPlayMakerをインストールしておいてください。
ステージとなるPlaneと、壁となるCubeをシーンに配置します。
次に、Inspector上でステージを「NavigationStatic」に変更します。
Bakeして歩ける範囲を調節する
その後、メニュー > Window > AI > NavigationからNavigationウィンドウを開き、BakeタブのBakeボタンを押します。
すると、移動可能な範囲を水色で表示してくれます。
BakeタブのAgentRadiusを変更することで移動可能な範囲を調節できます。Radiusの変更後はBakeすることを忘れないでください。
PlayMakerを使ってCapsuleに目的地を設定する。
移動させたい3Dモデル(今回はCapsule)と移動先の3Dモデル(今回はSphere)を作ります。
Capsuleにコンポーネント「NavMeshAgent」を追加してください。Agentにはさまざまな設定項目が存在します。詳細については後述します。
PlayMakerの設定をします。CapsuleにFSMを追加し、画像のように設定してください。
今回は起動時に移動先のPositionを取得し、目的地として設定するという動きを作成しています。
アクションのSetPropertyのターゲットオブジェクトには、CapsuleのNavMeshAgentコンポーネントを設定することに注意してください。
この状態で再生ボタンを押すと、CapsuleがSphereの位置まで移動することがわかります。
Agentのパラメーター
NavMeshAgentには動きに関するパラメーターが多数存在し、これらを調節することで細かい動きを設定できます。
設定項目の詳しい説明については、公式のドキュメントをご覧ください。
障害物を設置する
Bakeされた平面上に障害物を設置して、3Dモデルが迂回するように設定することもできます。
障害物となる3Dモデルを設置する
ステージの中に障害物を設置しましょう、今回は画像のように設置しました。
障害物にコンポーネント「NavMeshObstacle」を追加してください。
この状態でもCapsuleは障害物を避けることができますが、NavMeshObstacleコンポーネントのCarveにチェックをつけることでよりスムーズに回避できるようになります。
まとめ
以上のように、NavMeshを使用することで、簡単に動きのある3Dモデルを作ることが可能です。
また、今回のシーンでは目的地は一つでしたが、複数の目的地を設定することで一定の範囲を巡回するように設定したり、目的地をランダムにすることで予測不可能な動きを作ることが可能です。
ぜひNavMeshを使って表現の幅を広げてみてください。
STYLYにアップロードする方法
完成したシーンをSTYLYにアップロードしてみましょう。
アカウント作成方法
STYLYにアップロードする方法
UnityからSTYLYにアップロードする方法
NEWVIEW SCHOOL ONLINEの紹介
VR/ARコンテンツ制作に必要なUnity・PlayMakerを基礎から応用まで学べ、STYLYで配信されている魅力的なコンテンツの制作過程(制作技術も公開します)を学べるNEWVIEW SCHOOL ONLINEを開講中です。