LoginSignup
13
14

More than 5 years have passed since last update.

敵キャラとかを自動的に動かす NavMesh

Last updated at Posted at 2016-11-06

NavMeshとは

経路を探索してくれるAIみたいなもの。移動する順番を指定したり、障害物を避けてくれたりする。

めっちゃ簡単。

工夫次第でいかにも敵に意思があるように作れる。

使い方

大きく分けて以下の2つ。
1. エリアに対してNavMeshをBakeする。
2. 移動させたいもの(ここではキャラクター)に対してNav Mesh Agentをアタッチする。
3. 移動に関するスクリプトを書き、キャラクターにアタッチする。

1.エリアに対してNavMeshをBakeする

エリアは既にあるものと仮定する。

メニューからWindow -> Navigationをクリック。

Navigationタブが表示されるので下のBakeをクリック。

するとエリアに青い面が現れる。これが移動ルートになる。

移動ルートは自動で生成してくれるが、上のBakeをクリックすると詳細設定画面になるので、そこで調整できる。

2.キャラクターに対してNavMesh Agentをアタッチする。

キャラクターをクリックし、Add ComponentNav Mesh Agentをクリック。

3. 移動に関するスクリプトを書き、キャラクターにアタッチする。

スクリプトを作成し、移動させたい対象にアタッチする。

単純にある対象(ここではtarget)に向かっていくスクリプトを以下に書きます。

Move
public class Move : MonoBehaviour {

    public GameObject target;

    void Start () {
        NavMeshAgent agent = GetComponent<NavMeshAgent> ();
        agent.speed = 1;//このようにスクリプトからNavMeshのプロパティをいじれる。
        agent.destination = target.transform.position;
    }
}

ハマリポイント

  1. エリアのオブジェクトをstaticにしておかないと動かない。(Inspectorビュー上のチェックボックス)
  2. キャラクターにRigitBodyがついてると目に見えない何かに衝突してしまう。
13
14
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
14