sourcePosition | レイの始点 |
targetPosition | レイの終点 |
hit | レイを飛ばしてヒットしたオブジェクトのプロパティー情報 |
areaMask | レイを飛ばす時に特定のマスクをかけるためにナビメッシュレイヤーを渡すことができる |
bool ターゲット位置に辿りつく前に終点となる場合は true、そうでない場合は false
ナビメッシュ上で二点間でレイを飛ばします
レイが始点から目標に向かってトレースされるとき、Source と Destination の点が NavMesh に最初にマップされます。レイが NavMesh 境界に当たった場合、関数は True を返し、ヒットデータが満たされます。 Source から目標へさえぎるものがない場合、関数は False を返します。
外縁のでレイキャストが終了した場合、 hit.mask は 0 です。そうでなければブロックしているポリゴンのエリアマスクが含まれています。
NavMesh で 2 点の間をエージェントが障害なく歩くことができる場合、この関数は確認するために使用することができます。たとえば、キャラクターがスペースを必要とする回避してかわす動きをしなければならない場合、キャラクターの場所から複数の方向にキャラクタがかわすことができる場所を見つけるためにレイを放つことができます。
NavMesh.Raycast は Physics Raycast とは異なります。NavMesh 上で "2.5 次元" で機能するものだからです。 Physics Raycast との違いは NavMesh 版は地面の穴などのようなナビゲーションの障害物のすべての種類を検出できます。エリアをナビゲートできるなら斜面を登るようなこともできます。
// TargetReachable.cs using UnityEngine; using System.Collections; public class TargetReachable : MonoBehaviour { public Transform target; private NavMeshHit hit; private bool blocked = false; void Update() { blocked = NavMesh.Raycast(transform.position, target.position, out hit, NavMesh.AllAreas); Debug.DrawLine(transform.position, target.position, blocked ? Color.red : Color.green); if (blocked) Debug.DrawRay(hit.position, Vector3.up, Color.red); } }
NavMesh で最も近い点を見つけるために探している場合、ワールドで点を見つけるために Physics Raycast を使用する必要があります。 Move to Click Point の例を参照してください。