ここではUnityのナビゲーションシステムの概要について説明します。
※この記事で使用しているUnityのバージョン:Unity2019.1
ナビゲーションとは?
Unityで言うところのナビゲーションとは「キャラクターを自動的に目的地に移動させる機能」のことを指します。
ゲームでは例えば「敵キャラクターを自動的に移動させたい」というような場面は多いと思いますが、そのような処理を自力で実現するのはとても大変です。というのも目的地までの経路をきちんと求めないといけませんし、さらに途中で段差や穴などがある場合も考慮しないといけないからです。
しかしUnityのナビゲーション機能を使えば、そういった処理の作り方が分からなくても目的地まで移動するキャラクターを簡単に作ることができます。敵キャラクターやモブキャラなど、プレイヤー以外のキャラクターを作る際にとても便利な機能です。
Unityのナビゲーション要素
さて、Unityのナビゲーション機能を実行するうえでは次の4つの要素が重要となります。
- ナビメッシュ(NavMesh)
- ナビメッシュエージェント(NavMeshAgent)
- ナビメッシュ障害物(NavMeshObstacle)
- オフメッシュリンク(OffMeshLink)
ナビメッシュ(NavMesh)
まずナビメッシュは、後述する「ナビメッシュエージェント」が経路探索できる範囲のことです。ナビメッシュエージェントを動かすために最低限必要で、あらかじめ手動で生成しておく必要があります。
ナビメッシュの具体的な作り方は「ナビメッシュ(NavMesh)の作り方」をご覧ください。
ナビメッシュエージェント(NavMeshAgent)
ナビメッシュエージェントは簡単に言うと「自動で経路を探索して移動するキャラクター」です。事前に用意されたナビメッシュの範囲内を、指定された目的地に向かって自動的に移動します。
ナビメッシュエージェントの使い方は「ナビメッシュエージェント(NavMeshAgent)の使い方」をご覧ください。
ナビメッシュ障害物(NavMeshObstacle)
ナビメッシュ障害物はその名の通りナビメッシュエージェントの行く手を遮る障害物で、ナビメッシュエージェントはこの障害物を回避するような動きをします。なお、ナビメッシュ障害物は動かすことも可能です。
ナビメッシュ障害物の使い方は「ナビメッシュ障害物(NavMeshObstacle)の使い方」をご覧ください。
オフメッシュリンク(OffMeshLink)
オフメッシュリンクは、ナビメッシュエージェントが段差や穴などを飛び越えられるようにするための接続点です。ナビメッシュと一緒に自動で作ることができるほか、手動でも作れます。
オフメッシュリンクの作り方は「オフメッシュリンク(OffMeshLink)の作り方」をご覧ください。