2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NavMeshAgentを使ってキャラクターを自動的に動かす(Unity)

Posted at

はじめに

NavMeshAgentを用いてキャラクターを自動的に動かす方法をまとめていきます。

NavMeshAgentに関して知らないよという方は調べると様々な記事が出てくるのでそれを参考にしていただければと思います。

簡単に説明すると、目的地まで自動的に移動させるもので途中にオブジェクトなどが存在する場合はそれをAIで避けて目的地まで向かいます。

やり方

  1. PackageManagerから【AI Navigation】をインポートします
    スクリーンショット 2023-10-28 165642.png

  2. するとWindowsタブからAIが選択できるようになるのでそこから【Navigation】を選択します

  3. 同様に【Navigation(Obsolete)】も選択します
    スクリーンショット 2023-10-28 165716.png

  4. すると新しくタブが表示されるので適当に配置してください(自分はインスペクタータブと同じところに配置しています)。

  5. Navigation(Obsolete)タブに【Bake】ボタンがあるのでクリックします。すると画面内に水色のものが広がります。これがキャラクターが歩ける範囲になります。
    スクリーンショット 2023-10-28 170003.png

  6. 次に自動で動かしたいキャラクター(敵など)に【NavMeshAgent】コンポーネントをアタッチします
    スクリーンショット 2023-10-28 173249.png

  7. 次に適当に名前を付けたスクリプトをアタッチして、スクリプトを編集します

  8. スクリプトの中身を以下のようになります(最低限)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class EnemyController : Monobehaviour
{
    [SerializeField]
    private NavMeshAgent _navMeshAgent;

    //追いかける対象
    [SerializeField]
    private Transform _player;

    void Update()
    {
        _navMeshAgent.SetDestination(_player.position);
    }
}

9.インスペクターから_navMeshAgent(自身)と_player(追いかける対象)を割り当てる
スクリーンショット 2023-10-28 174139.png

これでゲームを開始するとプレイヤーのほうに向かって自動で動くようになります

おわりに

現状常に追いかけてきますが、ゲームによって対象との距離が近くなったら追いかけてくるという風に設定したほうがよかったりするかもしれませんね。

2
3
0

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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?