UnityのNavMeshAgentにおける「StepHeight」と「Height」の違いと役割
UnityのNavMeshAgentには、ナビゲーションの挙動を制御するためのパラメータが多数存在します。その中でも「StepHeight」と「Height」は、エージェント(キャラクターやAI)の移動挙動に大きく関わる重要な設定です。本記事では、それぞれの役割や適切な値の設定方法について詳しく解説します。
1. StepHeight(ステップの高さ)とは?
役割
StepHeight
は、エージェントが乗り越えられる段差の最大高さ を決めるパラメータです。この値以下の段差であれば、エージェントはスムーズに移動できます。
値を変更するとどうなるか?
StepHeight の値 |
挙動 |
---|---|
小さい値(例: 0.1 ) |
小さな段差でも引っかかって登れないことがある |
大きい値(例: 1.0 ) |
高い段差も登れるが、不自然な移動になることがある |
-
StepHeight
を高くしすぎると、不自然に大きな段差を登ることがあり、キャラクターの見た目に違和感が生じることがある。 -
StepHeight
を小さくしすぎると、小さな段差でも進めなくなる可能性 がある。
適切な値の設定
通常のキャラクターの場合、StepHeight = 0.3 ~ 0.5
程度が自然な設定となります。
2. Height(エージェントの高さ)とは?
役割
Height
は、エージェントの身長(高さ) を設定するパラメータです。この値が基準となり、エージェントが通れる通路の高さが決まります。
値を変更するとどうなるか?
Height の値 |
挙動 |
---|---|
小さい値(例: 1.0 ) |
低い通路も通れるが、エージェントの見た目と合わなくなる可能性がある |
大きい値(例: 3.0 ) |
低い天井の下や狭いトンネルを通れなくなる |
-
Height
を大きくすると、狭い通路を通れなくなる。 -
Height
を小さくすると、エージェントが通れるエリアが増えるが、キャラクターの見た目と一致しなくなる可能性がある。
適切な値の設定
-
人型キャラなら
Height = 2.0
程度が一般的。 - 動物やロボットなど、低いキャラは
Height = 1.0
以下もあり得る。
3. StepHeight と Height の違い
パラメータ | 役割 | 影響 |
---|---|---|
StepHeight |
乗り越えられる段差の最大高さ | 値を上げると高い段差も登れるが、不自然になる可能性あり |
Height |
エージェントの身長 | 値を上げると低い場所を通れなくなる |
StepHeight
は「どの高さまで段差を登れるか」、Height
は「どの高さまでの空間を通れるか」を決める指標です。
4. 実践的な設定例
① 人型キャラ(例: FPS キャラクター)
StepHeight: 0.4
Height: 2.0
✅ 小さな段差(0.4m 以下)はスムーズに乗り越え、天井が 2m 以上ある場所のみ通行可能。
② 小型ロボット
StepHeight: 0.2
Height: 1.0
✅ 小さな段差(0.2m 以下)は乗り越えられ、低い通路(1m 以上の高さ)も通れる。
③ 大型モンスター
StepHeight: 1.0
Height: 4.0
✅ 1m までの段差はスムーズに乗り越え、4m 以上の高さがある場所しか通れない。
5. まとめ
✅ StepHeight
はエージェントが乗り越えられる段差の高さ(通常 0.3 ~ 0.5
)
✅ Height
はエージェントの身長(通常 2.0
くらい)
✅ 適切な値を設定しないと、エージェントが進めない or 不自然な動きになる
NavMeshAgent を使ったナビゲーションシステムを構築する際には、これらのパラメータを適切に設定し、エージェントの移動をスムーズにすることが重要です。適切な設定を行い、よりリアルなAIの移動挙動を実現しましょう!
6.追記
StepHeight を Height より大きくすると、例えば「1mのドアは通れないのに、1mの段差は登れる」という不自然な動作 になることがある。
よって、基本的には、StepHeight < Heightにする。
また、Heightは、NavMeshAgentの、コンポーネントの中の、ObstacleAvoidanceのHeightと同じにするとよい。かも。例外はあるのかな。