質問: true; ``` これを私のAlien_move(作業7で追加したコード)のStart()に入れたところ、_typeが未定義ということで弾かれてしまいました。
回答: 自己解決 回答してくれた方には申し訳ないのですが、そもそもやり方が違いました。 これから見てくれる方のために、うまくいったやり方を残しておきます。 > > 1.アドオンをDL、解凍、設置 > > > https://github.com/h8man/NavMeshPlus ↑のURLのGitLabのページから入手できるアドオンをDL、解凍、Assetの欄に置いてください。 本文の☆のデータが残っていると、データが競合して動かなくなるので、消去してください。 > > 2.マップを設置 > > > この工程が少々面倒です。 まず、地面、歩ける場所となる部分をTilemapを用いて作成します。 もし、障害物、壁などを追加したい場合は、二枚目のTilemapを用いてそれらを設置してください。(タイルマップごとで判定してNavMeshを作っているようなので、見た目は壁でも全部歩けるようになってしまします。) ここでは、地面となるTilemapをGroud、壁のみを描いたTilemapをWallと呼びます。 > > 3.NavMeshModifireを各Tilemapにアタッチ > > > 作業1でインストールしたアドオンの中にNavMeshModifireというナニか(勉強不足でごめんなさい。)があるので、それを各Tilemapにアタッチします。コンポーネントの追加画面で検索をかければ出てきます。 ここで、いずれもOverrideAreaにチェックをいれます。すると、AreaTypeという欄が増えるので、歩け所が描かれているマップにはWalkable、歩けない場所、壁や障害物が設置されてるマップにはNotWalkableを設定します。今回はGroundをWalkable、WallをNotWalkableに設定します。 > > 4.空のオブジェクトを作成 > > > 5.作業4で作ったオブジェクトにNavMeshSurface2dをアタッチ > > > NavMeshSurfaceとは別物なので注意です。NavMeshModifire同様、検索をかければすぐ出てきます。 まず要素の下の方にある、RotateSurfaceToXYをクリックします。すると、オブジェクトのTransform欄の回転の値が「-90.00001」になることを確認してください。 つぎにOverrideByGridと、CompressBoundsにチェックを入れてください。 最後にBakeを押すと、メッシュが生成されます。 ちゃんと、歩ける場所と壁が分かれてメッシュが生成されているか確認してください。 メッシュは青っぽいアミアミになってるのでわかりやすいと思います。 また、メッシュはNavMeshSurface2dがアタッチされているオブジェクトを選択しているときと、ナビゲーションウインドウを開いているときしか見えないので、注意してください。 > > 6.動かすオブジェクト、追われるオブジェクトを作成し、タグをつける > > > マップの作製より先にやってもいいですが、今回は説明のために順番を付けています。 今回は追われるオブジェクトをPlayer、Playerを追うオブジェクトをAlienとします。 それらにタグを付けます。(付けなくても恐らく動きはしますが、今回私がうまくいった方法を説明しています。) タグ自体は何でもいいですが、私はPlayerにPlayer、AlienにEnemyを付けました。 > > 7.オブジェクトを動かすためのスクリプト作成 > > > 今回私のはAlien_moveにしました。 ``` using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class Alien_move : MonoBehaviour { [SerializeField] Transform target; private NavMeshAgent agent; void Start() { target = GameObject.FindGameObjectWithTag("Player").transform; agent = GetComponent(); agent.updateRotation = false; agent.updateUpAxis = false; } void Update() { agent.SetDestination(target.position); } } ``` Playerのところは、付けたタグに応じて変更してください。 書けたらこのスクリプトを保存、動かしたいオブジェクトにアタッチしてください。今回はAlienにアタッチします。 また、これのインスペクター画面のTargetに追いかけたいオブジェクトを入れます。 今回はPlayerをいれます。 > > 8.動かしたいオブジェクトにNavMeshAgentをアタッチ > > > ここは何もいじる必要はありません。 でも、ここの値が動くための速度だったりするので、いじりたい人は勝手にどうぞ。 > > 9.テスト > > > 実際に再生して、動かしてみましょう。 ちゃんと動くことが確認できると思います。 今回は割愛しましたが、Playerを動けるようにすると、ちゃんと動いた先に動くようになります。