1

更新 10/03

好的,所以我发现了问题所在。C# 是一种有趣的古老语言..我改变了

    int navMeshCount = navMesh.GetPath(ref start, ref end, routePolys, navMeshRoute, false);

    var navMeshCount = navMesh.GetPath(ref start, ref end, routePolys, navMeshRoute, false);

最后我让寻路值起作用!

当我调试 routeNavMesh 数组时,我需要的值会填满。

http://i.imgur.com/QgH8UL6.png [有问题的调试屏幕截图]

一旦我完成,我会再次更新。


在让导航网格工作时遇到一些主要问题,特别是我无法让它进行任何寻路或让它以任何有用的方式响应我的 vector3 输入。

我正在研究 sunburn 引擎,它位于 XNA 4.0 之上,因此所有 XNA 功能仍然可用。

最近 Recast Navigation from digesting Duck 的博客被移植到 c# 中,我用它为我的关卡创建了导航网格。这是我一直试图遵循的教程/指南的链接:http: //xboxforums.create.msdn.com/forums/p/109484/647991.aspx

我不知道如何在 getpath 段上传递开始和结束值,这些是世界空间或对象空间中的值还是什么?如果我执行 vector3 值并将它们作为起始值和结束值输​​入(然后将它们设置在数组上的某个位置),我不会得到一个显示路径查找的值数组,我只是在 navmeshroute 中得到这两个逐字记录值大批。

这是我尝试运行路径的地方,它在我的更新中。

        routePolys = new ushort[dtStatNavMesh.MAX_POLYS];
        navMeshRoute = new Vector3[dtStatNavMesh.MAX_POLYS];


        if (ks.IsKeyDown(Keys.L))
        {

            if (!runOnce)


            {
                start = new Vector3(0, 0, 0);
                end = new Vector3(1000, 0, 1000);
                ppos = x;

                navMeshRoute[0].X = start.X;
                navMeshRoute[0].Y = start.Y;
                navMeshRoute[0].Z = start.Z;

                navMeshRoute[count].X = end.X;
                navMeshRoute[count].Y = end.Y;
                navMeshRoute[count].Z = end.Z;


                int navMeshStart = 0;

              navMesh.GetPath(ref start, ref end, routePolys, navMeshRoute, true);


                Console.WriteLine("navMeshPC" + navMesh.getPolyCount());

                int navMeshCount = navMesh.GetPath(ref start, ref end, routePolys, navMeshRoute, true);

                while (navMeshStart < navMeshCount)
                {

                    routeNode = navMeshRoute[navMeshStart++];

                }



                Console.Out.WriteLine("NMc : " + navMeshCount);

            }
        }
4

0 回答 0