unityのJUTPS3アセットで敵AIを設定してみたメモ。NavmeshやWaypointPathなど

unity jutps3 敵AI ゲーム作り方 3Dゲームの作り方
※記事内に広告が含まれています。

バーチャル3Dクリエイター神部まゆみです(*^-^*)

この記事はunityのJUTPS3アセットで敵AIを設定してみたメモです。

前回の記事はこちら。

動作確認した最新バージョンは Unity 6000.3.1 です。

ダウンロードアーカイブ
ダウンロードアーカイブ

敵AIなどを作る際のNavmeshはこちらも参考になるかもしれません。

●PRスペース●

〇まゆみマート|BOOTH

BOOTHでVRoidテクスチャやVRChat向けオブジェクトなどを販売しています。いいねしてくれると励みになります(*^-^*)

一応舞台のアセットを配置してみる

ゲームっぽくするために舞台のアセットを配置してみます。

以前買ったsimple townアセットを使うか…。

Simple Town – Cartoon Assets

ちょっと車が大きいから調整する必要はあるけど、これだけでなんかゲームっぽいぞ( *´艸`)

プレイヤーを大きくすれば良いか。

1.5倍くらいにしたらちょうど良いサイズ感になった。

unity jutps3 敵AI ゲーム作り方
unity jutps3 敵AI ゲーム作り方

敵キャラクターとかも1.5倍にすれば良いかな。

敵を配置してAIで巡回させる

これができれば最低限のゲームっぽくなりそう。

あとはゴール設定したりして、余裕があればシナリオっぽいムービーとかを作ればゲームになるかな。

敵を配置する

JU TPS3のデフォルトの敵でもいいけど、せっかくだからゾンビを配置してみます。

これは無料で使いやすいと思います。

Hungry Zombie

サイズ感も丁度良いですね。

unity jutps3 敵AI ゲーム作り方

敵AIを設定してみる

敵AIは以前少しだけやってみたけど、改めて設定してみます。

こちらの公式マニュアルに詳しく書いてある。

[Old Versions] How to use Enemies AI | JU TPS Documentation
unity jutps3 敵AI ゲーム作り方

1-簡単なセットアップでJUキャラクターを作成

2-オンにしますIsAIオプション タグを Enemy(または「Player」以外のタグ)に設定します

3- JU Health コンポーネントと JU インベントリを追加する

4-NavMesh のベイク処理

1~3までやる

simpleTPSで設定して、PatrolAIを追加する。

IsAIにチェック。

unity jutps3 敵AI ゲーム作り方

JU Healthとインベントリは既に追加されてました。

unity jutps3 敵AI ゲーム作り方

NavMeshについてよく知らないので調べる ※知ってたら読まなくていいです

私はまだNavMeshって使ったことがなかった…。

一応unityの公式ページに説明が載ってるのでだいたいは分かった。

ナビメッシュの作成 - Unity マニュアル
レベルのジオメトリ (地形) から NavMesh (ナビメッシュ) を作成することを NavMesh Baking と呼びます。このプロセスは、Navigation Static としてマークされているすべてのゲームオブジェクトのレンダー...

youtubeで検索したら、テラシュールブログさんの中の人が解説している動画があった。あの人unityの人だったのか…。

少し古いけど今と基本的な部分は変わってないっぽいです。

まぁまだよくわからないのでChatGPT氏に聞いてみるか。

unity jutps3 敵AI ゲーム作り方

NavMesh は、Unity のゲームオブジェクトが移動可能な地形を理解するためのシステムです。NavMesh は、通常、AI キャラクターやプレイヤーキャラクターなどの移動を管理するために使用されます。NavMesh は、ゲームオブジェクトの移動範囲を定義し、移動可能な場所を自動的に計算しますが、敵がプレイヤーを見つけたり追跡したりする機能は NavMesh には含まれていません。

通常、敵がプレイヤーを見つけたり追跡したりする場合、NavMesh を使用して敵が移動可能な領域を計算し、その後、別途スクリプトを使用して敵の行動を制御します。この制御スクリプトは、プレイヤーを見つけた場合に敵の挙動を変更するためのロジックを含むことが一般的です。

例えば、プレイヤーを見つけた場合、敵がプレイヤーの方向に移動したり攻撃を行ったりするような処理は、NavMesh とは直接関係のない、別のスクリプトで実装する必要があります。

NavMesh は移動可能な地形を管理するためのツールであり、その他の挙動(例:プレイヤーの発見や追跡)は別の方法で実装する必要があります。

こんな便利な機能あったのか…今まで知らなかったΣ(゚Д゚)

なんか一つのシーンに一つのNavMeshファイルで、キャラクターがどんなにたくさん配置されていても同じ一つのNavMeshファイルを共有しているっぽいです。

unity jutps3 敵AI ゲーム作り方


通常、一つのシーンには一つの NavMesh が存在します。NavMesh はシーン全体の移動可能な領域を定義し、複数のキャラクターが共有して利用することができます。

敵キャラクターごとに個別の NavMesh を作成する必要はありません。代わりに、同じ NavMesh を共有して、複数の敵キャラクターが移動する際に使用します。NavMesh はシーン内のすべての移動可能な領域を表現するため、一つの NavMesh でシーン内のすべてのキャラクターが移動できるようになります。

NavMesh をシーン全体に適用することで、複数のキャラクターが同じ環境で自然な移動を行うことができます。NavMesh の設定や制御によって、異なるキャラクターが移動する方法や行動を個別に制御することができますが、その基盤となる移動可能な領域は一つの NavMesh で共有されます。

はい、その通りです。NavMesh は一つのシーン内で共有されるため、どれだけ多くのキャラクターが配置されていても、同じ NavMesh を共有して移動可能な領域を定義します。NavMesh はシーン全体の移動可能な領域を表現するため、すべてのキャラクターが同じ環境で自然な移動を行うことができます。

静的なオブジェクトのコライダーのみを考慮して、移動可能な場所を勝手に推定してくれる感じっぽい?です。ちゃんと検証してないから本当にそうなのかは分からないが…。

unity jutps3 敵AI ゲーム作り方

はい、通常、NavMesh は静的なオブジェクトのコライダーのみを考慮します。NavMesh は、”Static” チェックボックスがオンになっているオブジェクトのコライダーを使用して移動可能な領域を計算します。

“Static” チェックボックスがオンになっているオブジェクトは、Unity の静的オブジェクトとしてマークされます。これらのオブジェクトの位置や形状はプログラムによって変更されないため、NavMesh はこれらのオブジェクトのコライダーを使用して移動可能な領域を効率的に計算できます。

一般的に、NavMesh は動的なオブジェクトのコライダーを考慮しないため、動的なオブジェクト(例えば、他の NPC など)は NavMesh の計算には直接影響しません。動的なオブジェクトの移動を考慮する場合、それらの動きをプログラムによって処理する必要があります。

したがって、NavMesh を使用する場合、静的なオブジェクトのコライダーのみが移動可能な領域の計算に使用されます。動的なオブジェクトの移動や相互作用を考慮する場合、それに対するプログラム的な処理が必要になります。

NavMeshを設定してベイクしてみる

unityのページに載ってる方法だと、床を選択してベイクしてますね。

ナビメッシュの作成 - Unity マニュアル
レベルのジオメトリ (地形) から NavMesh (ナビメッシュ) を作成することを NavMesh Baking と呼びます。このプロセスは、Navigation Static としてマークされているすべてのゲームオブジェクトのレンダー...
unity jutps3 敵AI ゲーム作り方

ナビゲーションウィンドウをアクティブにしながら、下の「ナビメッシュを表示」にチェックを入れるとナビメッシュの範囲が青く表示されるみたい。

unity jutps3 敵AI ゲーム作り方

あれ、でも選択した範囲だけじゃなく、歩行可能な場所が全部表示されてるっぽい?

段差があるところや水場は青くなってないけど、インスペクターの「静的」にチェックが入ってなかったからこれが原因かな?

unity jutps3 敵AI ゲーム作り方

Navimeshについては後でもう少し詳しくやってみようかな。

WaypointPathを設定して巡回させる

WaypointPathを指定すれば巡回させられます。

巡回ポイントはCtrl+Dでコピペすれば伸ばせる。

On End PathにRestart Pathを指定すると、終点まで行ったらまた視点に戻るっぽい。

unity jutps3 敵AI ゲーム作り方

これで一応動かせた!

しかしデフォルトで走る設定にしてあるからか、ちょっと小回りが利かない感じだな…。

このあたりはサンプルを見ながら微調整する必要がありそう。

設定すれば敵も銃を撃てるっぽい

↓はサンプルシーンから持ってきた敵AIだけど、見つかると銃を撃ってきます。

武器の設定方法はプレイヤーと同じっぽい。

しかし先に巡回のところをもう少しちゃんとできるようになってからのほうが良いかな(;^_^A

おわりに

舞台と敵を設定するとかなりゲームっぽくなってきた気がする。

でも敵AIの設定とかはもう少し詰めたほうが良いかな…。

もう少しNavmeshについても勉強したほうが良さそう。

まぁもう少しいじってみます(*^-^*)

タイトルとURLをコピーしました