Version: 5.3 (switch to 5.4b)
言語English
  • C#
  • JS

スクリプト言語

好きな言語を選択してください。選択した言語でスクリプトコードが表示されます。

NavMesh.Raycast

フィードバック

ありがとうございます

この度はドキュメントの品質向上のためにご意見・ご要望をお寄せいただき、誠にありがとうございます。頂いた内容をドキュメントチームで確認し、必要に応じて修正を致します。

閉じる

送信に失敗しました

なんらかのエラーが発生したため送信が出来ませんでした。しばらく経ってから<a>もう一度送信</a>してください。ドキュメントの品質向上のために時間を割いて頂き誠にありがとうございます。

閉じる

キャンセル

マニュアルに切り替える
public static function Raycast(sourcePosition: Vector3, targetPosition: Vector3, out hit: NavMeshHit, areaMask: int): bool;
public static bool Raycast(Vector3 sourcePosition, Vector3 targetPosition, out NavMeshHit hit, int areaMask);

パラメーター

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 の例を参照してください。