Version: 2023.2
言語: 日本語
public static bool Raycast (Vector3 sourcePosition, Vector3 targetPosition, out AI.NavMeshHit hit, int areaMask);

パラメーター

sourcePosition レイの始点
targetPosition レイの終点
hit レイを飛ばしてヒットしたオブジェクトのプロパティー情報
areaMask レイを飛ばす時、特定のマスクをかけるためにナビメッシュレイヤーを渡すことができる

戻り値

bool ターゲット位置に辿りつく前に終点となる場合は true、そうでない場合は false

説明

ナビメッシュ上の二点間でレイを飛ばします

レイが始点から目標に向かってトレースされるとき、Source と Destination の点が NavMesh に最初にマップされます。レイが NavMesh 境界に当たった場合、関数は True を返し、ヒットデータが満たされます。 Source から目標へさえぎるものがない場合、関数は False を返します。

If the raycast terminates on an outer edge, hit.mask is 0; otherwise it contains the area mask of the blocking polygon.

NavMesh で 2 点の間をエージェントが障害なく歩くことができる場合、確認として使用できます。たとえば、キャラクターがスペースが必要で回避しなければならない場合、キャラクターの場所から複数の方向にキャラクタが回避できる場所を見つけるためにレイを放つことができます。

The Raycast is different from physics ray cast because it works on “2.5D”, on the NavMesh. The difference to physics ray casts is that NavMesh ray casts can detect all kinds of navigation obstructions, such as holes in the ground, and it can also climb up slopes, if the area is navigable.

// TargetReachable
using UnityEngine;
using UnityEngine.AI;

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); } }

If you want to find the nearest point on the NavMesh, use physics ray cast to find a point in the world. For more information, refer to the Move to Click Point example.


public static bool Raycast (Vector3 sourcePosition, Vector3 targetPosition, out AI.NavMeshHit hit, AI.NavMeshQueryFilter filter);

パラメーター

sourcePosition レイの始点
targetPosition レイの終点
hit レイを飛ばしてヒットしたオブジェクトのプロパティー情報
filter A filter specifying which NavMesh areas can be passed when tracing the ray.

戻り値

bool ターゲット位置に辿りつく前に終点となる場合は true、そうでない場合は false

説明

Traces a line between two positions on the NavMesh, subject to the constraints defined by the filter argument.

The line is terminated on outer edges or a non-passable area.