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

Parámetros

sourcePositionEl origen del rayo.
targetPositionEl final del rayo.
hitMantiene las propiedades de la ubicación resultante del ray cast.
areaMaskUna máscara de campo de bit que especifica qué áreas NavMesh se pueden pasar cuando se hace un seguimiento del rayo.

Valor de retorno

bool True si el rayo se termina antes de alcanzar la posición objetivo. De lo contrario devuelve false.

Descripción

Trace una linea entre dos puntos en el NavMesh.

Los puntos de origen y de destino se asignan en primer lugar en el NavMesh, a continuación, un rayo se traza desde el punto de origen hacia el destino. Si el rayo alcanza un límite de NavMesh, la función devuelve true y los datos de golpe se llenan. Si la ruta de acceso entre el origen y el destino no está obstruida, la función devuelve false.

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

Esta función se puede utilizar para comprobar si un agente puede caminar sin obstáculos entre dos puntos en el NavMesh. Por ejemplo, si su personaje tiene un movimiento evasivo de esquivar que necesita espacio, puede disparar un rayo desde la ubicación de los personajes a múltiples direcciones para encontrar un lugar donde el personaje pueda esquivar.

El NavMesh.Raycast es diferente de la física de rayos emitidos, ya que funciona en "2.5D", en el NavMesh. La diferencia con el raycast de física es que la versión de NavMesh puede detectar todo tipo de obstrucciones de navegación, como agujeros en el suelo, y también puede subir las pendientes, si el área es navegable.

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

Si usted está buscando para encontrar el punto más cercano en el NavMesh NavMesh debe utilizar la física raycast para encontrar un punto en el mundo, mirar el ejemplo Move to Click Point.


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

Parámetros

sourcePositionEl origen del rayo.
targetPositionEl final del rayo.
hitMantiene las propiedades de la ubicación resultante del ray cast.
filterA filter specifying which NavMesh areas can be passed when tracing the ray.

Valor de retorno

bool True si el rayo se termina antes de alcanzar la posición objetivo. De lo contrario devuelve false.

Descripción

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.

Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961