言語: 日本語
  • C#
  • JS
  • Boo

スクリプト言語

お好みのスクリプト言語を選択すると、サンプルコードがその言語で表示されます。

NavMeshAgent.SamplePathPosition

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Switch to Manual
public function SamplePathPosition(passableMask: int, maxDistance: float, hit: NavMeshHit): bool;
public bool SamplePathPosition(int passableMask, float maxDistance, NavMeshHit hit);
public def SamplePathPosition(passableMask as int, maxDistance as float, hit as NavMeshHit) as bool

Parameters

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

Returns

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

Description

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

この関数は現在の経路に沿って、指定した距離だけサンプリングを行います。 その位置におけるメッシュの詳細が NavMeshHit オブジェクトとして返されます。 これを使用して、例えば キャラクターが辿りつく先の地形の種類を、実際に到達する前に確かめることが出来ます。 場面としてはキャラクターがこれから水に入るときに頭上に銃を構えることが出来ます。

	var target: Transform;
	var mesh: NavMesh;

	private var agent: NavMeshAgent;
	private var waterLayer: int;

	function Start () {
		agent = GetComponent.<NavMeshAgent>();
		waterLayer = mesh.GetNavMeshLayerFromName("Water");
		agent.SetDestination(target.position);
	}

	function Update() {
		var hit: NavMeshHit;
		
		// Check all layers one unit ahead.
		if (!agent.SamplePathPosition(-1, 1.0, hit)) {
			if (hit.mask & waterLayer) {
				// Water detected along the path...
			}
		}
	}
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    public Transform target;
    public NavMesh mesh;
    private NavMeshAgent agent;
    private int waterLayer;
    void Start() {
        agent = GetComponent<NavMeshAgent>();
        waterLayer = mesh.GetNavMeshLayerFromName("Water");
        agent.SetDestination(target.position);
    }
    void Update() {
        NavMeshHit hit;
        if (!agent.SamplePathPosition(-1, 1.0F, out hit))
            if (hit.mask & waterLayer) {
            }
        
    }
}
import UnityEngine
import System.Collections

public class ExampleClass(MonoBehaviour):

	public target as Transform

	public mesh as NavMesh

	private agent as NavMeshAgent

	private waterLayer as int

	def Start() as void:
		agent = GetComponent[of NavMeshAgent]()
		waterLayer = mesh.GetNavMeshLayerFromName('Water')
		agent.SetDestination(target.position)

	def Update() as void:
		hit as NavMeshHit
		if not agent.SamplePathPosition(-1, 1.0F, ):
			if hit.mask & waterLayer:
				pass