Unityで敵を動かしたい。でも自機と敵が近づくためにはどうすれば?
自機への経路を探索して決める必要がある。
それをPolarith AI ProというAssetで利用して実現する。
Polarith AI Proとは
平面上の経路探査を簡単に実現できるAsset。有料。
とりあえず使って見る
Hierarchyで右クリック 2D Objedt > Sprites > Triangle
三角形を3つ追加
Agent:プレイヤー
Danger:障害物
Interest:目標物
センサーを追加
Create > Polarith AI Move > Sensors > AIM Planar Sensor
センサーの設定 設定後にBuild new as Circleをクリック
これでセンサーの準備は完了。
次は対象の設定
AgentにAimSeekを二つアタッチ
人のマークのタブで、TargetObjectiveにInterrestとDangerを設定
丸のタブに切り替え
Game ObjectsにDangerとInterestのオブジェクトをD&D
これで再生してみる。Polatith AIのセンサーは再生時にしか見えないので注意すること。また再生時にはギズモを表示する設定にしないと見えない。
Sceneに戻ってAgentを動かしてみると
緑に黄色の線が、赤に、赤い線が動いているのがわかる。
線がでていなければSenserの設定を見直そう。
GizmoのOnにしてRedius変更。Build New as Circleを押して線の大きさが変わることを確認してみる。
ここまで出来たらあとは動くようにスクリプトを追加するだけ。
AgentにAIM Simple Controller 2dを追加
再生を押すとうごくようになる。
やったね。
発展 スムーズな動きにする。
移動時にスムーズな方向転換を行うにはもう一工夫が必要。
Agentに Aim Planar Interpolationを追加する
これで移動方向化センサーに設定した16方向からスムーズな方向へとかわる。
発展 物理法則で移動
物理法則で移動するにはAim Physics Controllerが用意されているのでそれを利用する。
目標物をレイヤーで設定
目標の設定や障害物の設定は自動的に設定できたらというあなたに。レイヤーで設定したものを自動的に設定できます。
新しくGameObjectを2つ作成。名前をEnvInterrest EnvDangerに設定。
作成したものにAimEnviromentをアタッチ。
AIMEnviromentのLayersに各自レイヤーを設定
Labelにも同じ名前を設定
DangerオブジェクトとInterestオブジェクトにレイヤーを各自設定。
橋渡しをするコンポーネントを追加する。
GameObjectを追加しPreceiverと名付け。
AiM Steering Perceiverを追加。
作成した2つのEnviromentオブジェクトを追加する。
AgentオブジェにAIM Steering Filterを追加。Perceiverオブジェクトとを追加
次にレイヤーで設定する。
Agentの Aim SeekでInterestとDangerを各自追加。今まで使っていたGameObjectのほうを削除することも忘れずに。
これで設定完了。ゲームオブジェクトのレイヤーでDangerやInterestと設定したオブジェクトにAgentが反応するようになれば成功。
やったね。
発展 動作を軽くする。
動かないもの、いわとかかべとかは起動時に計算すると動作が軽くなる。その設定はStaticにチェックをいれるだけ
発展 目標対象が複数のとき目移りしないようにする。
目標対象が複数あり、動作が安定しない場合はAgentにAim Stabilizationを追加。 これで安定する。
困ったとき
Lineが2重に見える
カメラが複数ある場合に発生する。カメラの数を1つに減らすと解決する。
パスで動かしたい
つづく
参考リンク