Unity Polarith AI Pro 自動で動く敵を簡単に作る

Unityで敵を動かしたい。でも自機と敵が近づくためにはどうすれば？
自機への経路を探索して決める必要がある。
それをPolarith AI ProというAssetで利用して実現する。

## Polarith AI Proとは
平面上の経路探査を簡単に実現できるAsset。有料。

## とりあえず使って見る
Hierarchyで右クリック　2D Objedt > Sprites > Triangle
三角形を３つ追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/d57c4031-90a8-eb20-5c0b-2da110592a3d.png)

わかりやすいように色をつける。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/d845e11b-98fb-6a27-7c27-3d78430949f6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/f02700a4-9530-7b4c-0a5c-8310e59ff319.png)
３つに名前をつける。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/e26ad263-ca29-d44f-a8f3-36796504672b.png)

Agent：プレイヤー
Danger：障害物
Interest：目標物

AgentにAIM　Contextをアタッチ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/b3a839cc-9fc7-95d4-bfc9-c08c73eabcb3.png)

センサーを追加
Create > Polarith AI Move > Sensors > AIM Planar Sensor
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/2154f962-1ee1-b99a-736f-b1d8b83b151b.png)

センサーの設定　設定後にBuild new as Circleをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/ee127e6c-f57e-fb3e-21cd-ef122a0a674d.png)

センサーをAgentの追加したAimContextに追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/16bf9bbb-0ead-64f3-c023-09c9e8be211a.png)

オブジェクトのラベルを設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/b63822ae-4a3c-5917-b292-a6ed13ff9edc.png)

これでセンサーの準備は完了。
次は対象の設定
AgentにAimSeekを二つアタッチ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/ce6bc556-19ab-5d21-3f7b-9486533da96e.png)
人のマークのタブで、TargetObjectiveにInterrestとDangerを設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/5b3c99b2-fc7a-3b09-0247-3bb46eedcd0d.png)
丸のタブに切り替え
Game ObjectsにDangerとInterestのオブジェクトをD＆D
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/cd6a0d49-7a84-5c57-a925-75ac4a6d0054.png)

これで再生してみる。Polatith AIのセンサーは再生時にしか見えないので注意すること。また再生時にはギズモを表示する設定にしないと見えない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/5fc0130b-ba23-8f86-d9f4-a83c7c94466f.png)
Sceneに戻ってAgentを動かしてみると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/587ceb7b-ca38-caa0-11ac-308f18a391cb.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/61b0d1e1-b581-ba68-44b7-7e531eb357ac.png)
緑に黄色の線が、赤に、赤い線が動いているのがわかる。
線がでていなければSenserの設定を見直そう。
GizmoのOnにしてRedius変更。Build　New as　Circleを押して線の大きさが変わることを確認してみる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/952560b0-13c3-d052-03d0-90a9b9216487.png)

ここまで出来たらあとは動くようにスクリプトを追加するだけ。
AgentにAIM Simple Controller 2dを追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/8ed0046f-7f55-bc39-274a-69d795b97bd1.png)
再生を押すとうごくようになる。
やったね。
![ezgif-2-8351dec904.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/d2981b74-977b-15c2-eb64-133dde40b78a.gif)

## 発展　スムーズな動きにする。
移動時にスムーズな方向転換を行うにはもう一工夫が必要。
Agentに Aim Planar Interpolationを追加する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/89295564-db9d-63b2-48b8-d3950e832737.png)
これで移動方向化センサーに設定した１６方向からスムーズな方向へとかわる。

## 発展　物理法則で移動
物理法則で移動するにはAim Physics Controllerが用意されているのでそれを利用する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/6c5e9dc5-1f62-b5c3-f1a0-677920b70500.png)

## 目標物をレイヤーで設定
目標の設定や障害物の設定は自動的に設定できたらというあなたに。レイヤーで設定したものを自動的に設定できます。

新しくGameObjectを２つ作成。名前をEnvInterrest　EnvDangerに設定。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/0dc0edb6-2fc0-ae7e-8b9c-1209a8da65cb.png)
作成したものにAimEnviromentをアタッチ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/e84097d4-e982-49c8-7ce2-2649ad9f3df2.png)
オブジェクトのAddLayerで２つ追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/e6b79bd8-dea0-f2ba-aea0-bc87683b4f9d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/960cf23c-26ba-7ead-bf01-1bb1ba96da5a.png)

AIMEnviromentのLayersに各自レイヤーを設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/ff407aad-e46f-0f81-b1a3-99b517f67fd5.png)
Labelにも同じ名前を設定



DangerオブジェクトとInterestオブジェクトにレイヤーを各自設定。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/8eb29c83-263d-c761-081c-dd1f401b9b40.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/ac91b22c-5729-2049-61f8-8440bcc6ad47.png)

橋渡しをするコンポーネントを追加する。
GameObjectを追加しPreceiverと名付け。
AiM　Steering Perceiverを追加。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/58a13065-b750-e64b-416a-f4fad91ea537.png)
作成した２つのEnviromentオブジェクトを追加する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/a796aed1-d7b2-6f2e-3191-d4fc4cc68bf4.png)

AgentオブジェにAIM Steering Filterを追加。Perceiverオブジェクトとを追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/c58fe6a5-24be-78dd-ed05-6df6329da966.png)

次にレイヤーで設定する。
Agentの　Aim SeekでInterestとDangerを各自追加。今まで使っていたGameObjectのほうを削除することも忘れずに。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/9c6035f4-33e1-d4f9-033f-850bfd95a551.png)

これで設定完了。ゲームオブジェクトのレイヤーでDangerやInterestと設定したオブジェクトにAgentが反応するようになれば成功。
やったね。

## 発展　動作を軽くする。
動かないもの、いわとかかべとかは起動時に計算すると動作が軽くなる。その設定はStaticにチェックをいれるだけ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/b89de076-1f9e-861d-f227-ce25263bdd36.png)

## 発展　目標対象が複数のとき目移りしないようにする。
目標対象が複数あり、動作が安定しない場合はAgentにAim Stabilizationを追加。　これで安定する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/97397e5d-b985-412b-4f67-c76cdf1fb9da.png)

## 困ったとき
### Lineが２重に見える
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/9c71bbde-506c-bc8a-8afb-b3cc8e7fc7a4.png)

カメラが複数ある場合に発生する。カメラの数を１つに減らすと解決する。

## パスで動かしたい

つづく

https://qiita.com/sebunwork009/items/bea45c095c34bbeb275d


## 参考リンク
https://www.asset-sale.net/entry/Polarith_AI_Pro_%7C_Movement%2C_Pathfinding%2C_Steering

https://www.youtube.com/watch?v=FYuSEJFiJMc&t=5s

https://polarith.com/docs/ai/

https://www.youtube.com/watch?v=vSfYcOoKb7U