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

スクリプト言語

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

NavMesh.FindClosestEdge

フィードバック

ありがとうございます

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

閉じる

送信に失敗しました

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

閉じる

キャンセル

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

パラメーター

sourcePosition クエリとなる距離の原点
hit 一番近い辺のヒット情報
areaMask もっとも近い辺を求める時に特定のマスクをかけるためにナビメッシュレイヤーを渡すことができる

戻り値

bool もっとも近い辺が見つかった場合は true

説明

特定の位置からもっとも近いナビメッシュオブジェクトの辺の情報を取得します

返される NavMeshHit オブジェクトは NavMesh の最寄りの端に最も近いポイントの位置と詳細が含まれています。 これを使用してエージェントの周りにどのくらいの余分なスペースがあるか照会するために使用できます。


        
// MeasureSpaceAround.cs
using UnityEngine;
using System.Collections;
public class MeasureSpace : MonoBehaviour {
	void DrawCircle(Vector3 center, float radius, Color color) {
		Vector3 prevPos = center + new Vector3(radius, 0, 0);
		for (int i = 0; i < 30; i++) {
			float angle = (float)(i+1) / 30.0f * Mathf.PI * 2.0f;
			Vector3 newPos = center + new Vector3(Mathf.Cos(angle)*radius, 0, Mathf.Sin(angle)*radius);
			Debug.DrawLine(prevPos, newPos, color);
			prevPos = newPos;
		}
	}
	void Update() {
		NavMeshHit hit;
		if (NavMesh.FindClosestEdge(transform.position, out hit, NavMesh.AllAreas)) {
			DrawCircle(transform.position, hit.distance, Color.red);
			Debug.DrawRay(hit.position, Vector3.up, Color.red);
		}
	}
}