问题标签 [navmesh]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
697 浏览

java - Java 2D 导航网格生成

我正在使用多边形剪裁器(http://www.lighti.de/projects/polygon-clipper-for-java/)和 libgdx delaunayTriangulator 来生成 2D 导航网格。

一切正常,直到我在“可行走”多边形内完全添加一个障碍物多边形。

这应该发生吗?

http://i.imgur.com/lBSKSxm.png

0 投票
1 回答
3167 浏览

c# - Unity 不会在协程中更新 NavMeshAgent 目的地

我正在 Unity 5 中编写一个 AI 脚本,该脚本主要由协程构成,用于在我的游戏中移动 AI 对象。它实际上工作得很好,并且以这种方式独立于框架。我试图避免混淆Update类的功能。

但是,我正在尝试创建一个名为wander 的函数,人工智能在其中徘徊并随机选择Vector3航点区域中的几个s 并前往每个s。之后,人工智能应该去下一个航路点,基本上做同样的事情到无穷远。碰撞检测和所有这些都是为了后面的部分。我想先修复导航部分。

wander如果我将函数与idlein 中的函数交换nextWaypoint,一切都会按预期工作,但这一点永远不会起作用:

这是一些测试代码(手动设置只有 1 个位置point[0],但它永远不会到达那个目的地。SetDestination永远不会更新到我想要设置它们的点。我已经尝试预先计算路径(NavMeshPath)和除了目标路径之外的所有东西都不会奇怪地改变或重置。我while (float.Epsilon < agent.remainingDistance)在函数中也有循环wander,但没有运气,因为它会永远留在那个循环中,因为没有路径可以去。

我可能在这里遗漏了一些东西,或者在这种情况下我的逻辑是错误的。希望有人可以给我一点推动或一些额外的调试选项,因为我不知道为什么目的地没有在我的漫游功能中更新。

0 投票
1 回答
1972 浏览

unity3d - 烘焙 NavMesh 将可步行空间置于障碍物的顶部

我正在使用 NavMesh 系统开发游戏。我放置障碍物并在导航选项卡中,将它们标记为静态。地板和墙壁也是静态的。然后我烘焙导航网格。但是,它会在障碍物的顶部以及内部构建一个导航网格。

附加到立方体的唯一组件是 Transform、Cube Mesh Filter、Box Collider、Mesh Renderer 和 Material。

我不知道为什么

0 投票
1 回答
703 浏览

c# - 从可步行点生成导航网格(3D)

这是交易 - 我正在研究一种算法/库,它能够在几乎任何环境中生成导航网格,在这些环境中,我可以获得受控代理和/或同一静态环境中其他代理的坐标。我唯一的输入是代理去过的点的集合。 (请参阅此处的图片以希望了解我的意思)

我已经到了可以手动创建导航网格并很好地导航它们的地步。然而,在更大的环境中,只有受控代理的坐标,手动执行它真的很乏味和耗时。

这种算法/库的用途对我来说是显而易见的,但我已经考虑了很多,所以我将列出一些我想要完成的事情:

  • 机器人技术(扫描环境,仅获取从自身到点的距离,因此获取坐标 - 无需复杂的图像/视频处理)
  • 能够通过探索未知和看不见的迷宫(任何形状或大小)来导航它的人工智能
  • 记录步行区域并为不知道某些地方的游戏创建人工智能,除非他们去过那里

现在你希望看到我正在寻找什么样的解决方案。

我已经尝试了几件事,但无法弄清楚。我尝试过的最成功的事情之一是给每个单独的点一个范围(创建一个圆圈),然后寻找有重叠圆圈的地方——你很可能在这些区域上移动。这种方法的问题始于对区域的三角测量。生成的网格可能有点不准确,但它必须能够无缝连接到网格的现有(“发现”)部分(并非所有内容都必须以某种方式互连,因为代理可以消失和重新出现,但在合理的接近范围内,连接网格)。

更多信息:我正在使用 C#,尽管 java、C++/C、目标 C、伪代码等的解决方案同样可以接受。

PS我对“只使用这个库”或“使用这个其他语言/环境”等答案完全不感兴趣......我想要一个算法。先感谢您。

0 投票
1 回答
12414 浏览

unity3d - 统一的 NavMeshAgent 不起作用

我正在统一制作游戏,它抛出错误“无法创建代理,因为没有有效的导航网格”,我不知道问题是什么。

设置图片

0 投票
3 回答
24860 浏览

c# - 如何让游戏忽略 Unity3D 中 UI 按钮的点击?

我有一个 UI Button(使用UnityEngine.UI)。

然而,点击Button似乎是点击进入场景(在我的情况下点击导航网格)。

如何解决这个问题呢?

我一直在使用典型的 Unity3D 代码让用户参与游戏,例如

如果我尝试这种方法也一样

在 iOS、Android 和桌面上似乎也是如此。

点击 UI(UnityEngine.UI.Button等)似乎是游戏的基本问题。

0 投票
4 回答
11790 浏览

unity3d - Unity Navmeshagent 到达停止距离时不会面对目标对象

当我和他说话时,我试图让 NPC 看着主角。我需要确保它看起来很自然,并且他面对着我。我知道我可以做 Transform.LookAt() 但这太即时且不自然。

当 navmeshagent 停止移动时,如何旋转它以面对我的角色?

0 投票
1 回答
1564 浏览

unity3d - Unity 3D 导航网格烘焙未覆盖所有区域

我目前正在研究一个游戏项目的寻路部分。我在烘烤导航网时遇到了问题——它没有覆盖我想要使其适合步行的所有区域。

这是问题的图像:

截屏

如何使用导航网格覆盖整个区域,以便代理可以步行?

0 投票
1 回答
4646 浏览

c# - Unity Nav Mesh 代理目标无效?

遇到问题,我想我知道为什么会这样,但不是解决问题的正确方法。

我的 Nav Mesh 代理在一个圆圈中选择一个随机点并朝它走去一段随机时间,当该位置有效时,它看起来像这样正常。 在此处输入图像描述

但是每隔一段时间,代理就会选择一个它不能走路的地方,然后在分配给它步行的时间里站在那里,然后再选择另一个地方并再次移动,而它不能走路时就会发生这种情况。

在此处输入图像描述

我知道它不移动的原因是路径无效(或者至少我认为这就是原因。)

但我尝试过实施这样的事情,但没有运气。

0 投票
1 回答
1304 浏览

c++ - 给定起点和目标,如何在导航网格中找到最短路径?

我用谷歌搜索“导航网格上的 A* 算法”只是为了得到错误的估计 g 值的方法,像这样

在此处输入图像描述

或这个 在此处输入图像描述

通过总结蓝色线段的长度,我们得到了g值,但它被高估了(g值应该被低估了)。该算法将返回一个优化的路径,但不保证是最短的。

我能想到的唯一方法是根据导航网格绘制可见性图。但这会消耗太多内存。

在此处输入图像描述

还有其他方法可以计算导航网格中的最短路径吗?