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

スクリプト言語

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

NavMeshAgent.SamplePathPosition

フィードバック

ありがとうございます

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

閉じる

送信に失敗しました

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

閉じる

キャンセル

マニュアルに切り替える
public function SamplePathPosition(areaMask: int, maxDistance: float, out hit: NavMeshHit): bool;
public bool SamplePathPosition(int areaMask, float maxDistance, out NavMeshHit hit);

パラメーター

areaMask パスをトレースする時に特定のマスクをかけるためにナビメッシュレイヤーを渡すことができる
maxDistance パス上のヒット情報を取得する距離
hit 取得できた辺の位置のプロパティー

戻り値

bool ヒット情報を取得する距離までの間にヒットしなければ true、そうでない場合は false

説明

現在の経路に沿って位置をサンプリングします

この関数は現在の経路に沿って、指定した距離だけサンプリングを行います。 その位置におけるメッシュの詳細が NavMeshHit オブジェクトとして返されます。これを使用して、例えば キャラクターが辿りつく前に、地表の種類を確かめることができます。例えば、エージェントが現在、深い水の中を移動していると、キャラクターのアニメーションは駆け足から、苦しい歩行に変わるかもしれません。


        
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { public Transform target; public NavMesh mesh; private NavMeshAgent agent; private int waterMask;

void Start() { agent = GetComponent<NavMeshAgent>(); waterMask = 1 << NavMesh.GetAreaFromName("Water"); agent.SetDestination(target.position); } void Update() { NavMeshHit hit; // Check all areas one length unit ahead. if (!agent.SamplePathPosition(NavMesh.AllAreas, 1.0F, out hit)) if ((hit.mask & waterMask) != 0) { // Water detected along the path... } } }