版本:Unity 6(6000.0)
语言英语
  • C#

NavMesh.FindClosestEdge

建议变更

成功!

感谢帮助我们提高 Unity 文档的质量。虽然我们无法接受所有的提交,但我们确实会阅读用户建议的每项变更,并在合适的地方进行更新。

关闭

提交失败

由于某种原因,你的建议的变更无法提交。请在几分钟后 <a>重试</a>。感谢你抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

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

参数

sourcePosition 距离查询的原点。
hit 保留结果位置的属性。
areaMask 一个位字段掩码,指定在查找最近的边时可以经过哪些 NavMesh 区域。

返回值

bool 如果找到了最近的边,则返回 True。

说明

从 NavMesh 上的一个点找到最接近的 NavMesh 边。

返回的 NavMeshHit 对象包含 NavMesh 最近的边上最近点的坐标及其细节信息。可以使用此查询来了解代理周围有多少额外空间。

// 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 一个过滤器,指定在查找最近的边时可以经过哪些 NavMesh 区域。

返回值

bool 如果找到了最近的边,则返回 True。

说明

找到 NavMesh 上的一个点到最近的 NavMesh 边,该点受 filter 参数约束。

返回的 NavMeshHit 对象包含 NavMesh 最近边上最近点的坐标及其细节信息。可以使用此查询来了解代理周围有多少额外空间。