Version: 2017.1

NavMesh.FindClosestEdge

切换到手册
public static bool FindClosestEdge (Vector3 sourcePosition, out AI.NavMeshHit hit, int areaMask);

参数

sourcePosition 此距离查询的原点。
hit 保留所生成位置的属性。
areaMask 位域遮罩,指定在查找最近边缘时可通过的导航网格区域。

返回

bool 如果找到最近边缘,则为 true。

描述

从导航网格上的一点找到最近的导航网格边缘。

返回的 NavMeshHit 对象包含 导航网格最近边缘上的 最近点的位置和详细信息。这可用于查询代理周围有多少额外空间。

// MeasureSpace
using UnityEngine;
using UnityEngine.AI;

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

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

参数

sourcePosition 此距离查询的原点。
hit 保留所生成位置的属性。
filter 一种过滤器,指定在查找最近边缘时可通过的导航网格区域。

返回

bool 如果找到最近边缘,则为 true。

描述

从导航网格上的一点找到最近的导航网格边缘,受过滤器参数的限制。

返回的 NavMeshHit 对象包含导航网格最近边缘上的最近点的位置和细节。这可用于查询代理周围有多少额外空间。

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