【问题标题】:How to get NavMesh polygons in Unity 3d如何在 Unity 3d 中获取 NavMesh 多边形
【发布时间】:2018-02-18 17:15:28
【问题描述】:

问题很简单,但我在互联网上找不到答案。如何获取 navmesh 的所有多边形,如何找到最近的多边形,如何找到这些多边形的中心,如何找到与特定多边形相连的多边形,等等?

unity 是否允许这种员工,或者您需要再次从 github 下载东西或在资产商店购买一些东西?

我发现这个帖子https://forum.unity.com/threads/accessing-navmesh-vertices.130883/ 但它只帮助找到顶点,而不是多边形或其他东西..

那么,有人知道吗?

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    解决方案

        var navMesh = NavMesh.CalculateTriangulation();
        Vector3[] vertices = navMesh.vertices;
        int[] polygons = navMesh.indices;
    

    来源:https://docs.unity3d.com/ScriptReference/AI.NavMeshTriangulation-indices.html

    navmesh 三角剖分的三角形索引。 每个三角形包含 3 个整数。这些整数指的是顶点数组。

    如果我没记错的话,应该是每个多边形中的点。


    其他有用的方法

    https://docs.unity3d.com/540/Documentation/ScriptReference/NavMesh.SamplePosition.html

    来自此来源:“在指定范围内查找 NavMesh 上的最近点。”

    https://docs.unity3d.com/530/Documentation/ScriptReference/NavMesh.Raycast.html

    “在导航网格上的两点之间画一条线。 bool 如果光线在到达目标位置之前终止,则为真。否则返回假。 "

    https://docs.unity3d.com/530/Documentation/ScriptReference/NavMesh.FindClosestEdge.html

    “从 NavMesh 上的某个点定位最近的 NavMesh 边缘。”


    您究竟需要导航网格数据做什么?

    【讨论】:

    • 基本上我想实现一些寻路算法。我知道 unity 提出了 A* 算法,但我想自己实现它们,以便自己训练和学习 NavMesh。
    • 在这种情况下。您可能想根据样本位置以及最近的边缘是否距离给定距离进行计算(意味着有足够的空间)。然后,您的角色可以尝试接近该点。另一种解决方案是计算自己的导航网格或制作自己的坐标。例如,通过制作玩家在其间移动的小方块。如果方块不应该被看到,你可以让它们对玩家不可见。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 2013-11-20
    • 2018-12-02
    相关资源
    最近更新 更多