问题标签 [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 投票
0 回答
466 浏览

unity3d - Unity - NavMeshComponets 未在 Unity 5.6 中完全实现

我对 Unity 5.6 中的新 NavMesh 有疑问。我无法找到 5.6 发行说明中提到的任何新导航网格组件(导航网格表面、(体积)修改器)。

我真的不知道如何轻松获得它们。我已经在以下位置下载了文件:https ://github.com/Unity-Technologies/NavMeshComponents ,我计划在我的项目中实现它们。我觉得很奇怪,当他们在 Unity 5.6 发行说明中提到它们时,你必须从 GitHub 手动下载它们。

您知道在 Unity 中使用它们的更简单方法吗?

友好的问候,昆腾

0 投票
2 回答
1515 浏览

c# - Unity NavMesh 可以用来实现 A* 算法吗?

我期待在我正在开发的游戏中使用 A* 寻路。(我实际上是在为自己制作一个游戏来了解这一点)。我想知道 Unity NavMesh 如何与自定义 A* 算法一起使用,而不是使用 NavMeshAgent。

0 投票
0 回答
1827 浏览

unity3d - NavMesh 采样位置返回无穷大

我试图获得一个我确定在导航网格上的随机位置。我使用 SamplePosition 通过调用另一种方法来给我关闭导航网格上的网格位置,该方法生成一个确定在屏幕字段内的随机位置。

我尝试了几次,但大多数情况下我得到一个位置 Vector3(infinity,infinity,infinity)

0 投票
2 回答
3930 浏览

c# - NavMesh 代理覆盖旋转

NavMesh Agent当敌人到达下一个航路点以与该航路点具有相同的旋转时,我有敌人使用我想要的巡逻到不同的航路点。这是代码:

问题是他一直在快速地来回旋转,我无法得到我想要的效果。

0 投票
1 回答
7551 浏览

unity3d - 统一导航网。跟随 + 停止距离目标一定距离

嗨,我试图创造的是玩家可以右键单击敌人,他会跟随一定距离。这工作正常。但我也希望它也停在那个距离上。目前,如果敌人停下来,他会尝试前往其确切位置,而不是稍微停下来,这就是我目前所拥有的。

0 投票
1 回答
822 浏览

c# - Unity 的 NavMesh 链接在运行时未正确连接

我正在使用当前最新版本的 Unity 2017.1f1。

我想要做什么

在我的 2.5D 游戏中,我生成的敌人将向玩家导航,同时避开运行时生成的障碍物(启用弯曲)。我还额外生成了一个平面(玩家和敌人在其上移动),我希望当前平面 navMesh 表面通过 navMesh 链接连接到下一个生成的平面 navMesh 表面,以便敌人可以通过链接导航到其他平面。

问题是什么?

有两个问题发生:

  1. 靠近弯曲的障碍物的链接enabled不会连接到下一个平面。
  2. 由于玩家可以左右奔跑,我根据玩家面对的方向旋转平面,但是将平面旋转 180 度,而它的方向等于Vector3.Down(即 (0,-1,0))navMesh 链接在该平面上不会在运行时连接到其相邻平面。

我的实现

首先,我在运行时使用Unity在GitHub上提供的navMesh组件来实现这一点。现在,当我以附加方式生成平面时,我首先构建 navMesh 表面,然后更新其附加链接。

接下来,我更新当前平面(玩家所在的平面)navMesh 链接以连接新生成的平面 navMesh 表面。

我试图解决的问题

对于第一个问题:-

  • 在生成障碍之前和之后更新当前链接并重建导航网格。
  • 在生成障碍之前和之后仅更新当前链接。

对于第二个问题:-

  • 我没有线索,我不知道是什么原因造成的:(

如果有人可以帮助我,我将不胜感激,如果你们可以在统一脚本中解释内部发生的事情,这将非常有帮助。毕竟,我遇到这些问题是因为我没有正确理解这个概念。

0 投票
1 回答
907 浏览

unity3d - “代理”选项卡和“烘焙”选项卡 Unity 中的代理配置有什么区别?

在 Unity 中,当导航到 Window > Navigation 时,我看到在 Agents 选项卡和 Bake 选项卡中都有代理的配置。它们是代理的半径、高度、最大坡度和台阶高度。为什么它们存在于上述两个选项卡中?

具体来说,我的地图使用不同高度的地形,并且我有 2 种代理类型:汽车和飞机。我希望我的车只能在平原上行驶,而飞机应该能够在任何地方行驶:山、平原或水。当我在“代理”选项卡中更改最大坡度和下降高度(在每种代理类型上测试)时,什么都没有发生,但是当我在“烘焙”选项卡中执行此操作然后按“烘焙”时,Car 和 Airplane 代理都可以移动所有内容。请您指出我的错误并告诉我正确的方法!

谢谢阅读。

0 投票
1 回答
5414 浏览

unity3d - 检查禁用的导航网格代理(播放器)是否在导航网格上

我正在使用播放器上的导航网格/代理作为辅助自动路径功能,除非用户单击地板上的一个点走向,否则该代理始终处于禁用状态。然后,一旦到达目的地,代理将再次被禁用。

我需要一种方法来检查玩家当前是否在 navmesh 上,在可容忍的阈值内,而无需启用 navmeshagent。或者,如果有一种方法可以在不禁用它的情况下删除 navmeshagent 的播放器绑定“效果”,因为我也可以用它来解决我的问题。

我猜在伪代码中,这就是我在禁用 navmeshagent 的情况下要完成的工作:

我正在考虑比较玩家和导航网格的 Y 变换以获得高度差并使用它来确定玩家是否在导航网格上但我不知道如何获取 Y 变换的可能性导航网格在特定的 X 和 Z 点。也许我可以使用光线投射?我不确定最好的方法。就像我说的,如果有一种方法可以消除代理对玩家的玩家绑定“效果”,但保持代理启用,我也可以使用它。

0 投票
1 回答
345 浏览

c# - 使用 Navmesh 和协同程序的基本 RTS 运动?

我正在尝试通过单击使角色跟随移动对象(基本 RTS 移动),并且我听说使用协同程序比使用 void Update 节省更多的计算能力。但是,我对协同程序很陌生,我需要一些帮助。

  • 另外,我觉得没有必要包含点击代码,因为这是一个简单的点击然后调用这个脚本的功能。

这是我的问题

  1. 如果我的角色MoveToPoint()首先使用,那么使用FollowTarget()将需要玩家点击对象两次而不是一次开始跟随,我似乎无法弄清楚为什么..

  2. 当玩家在同一个对象上多次单击时,多个UpdatePosition()将运行,我如何让它在该对象上运行一次?(我的朋友大力点击一个物体试图让角色走得更快,而显然它没有。现在有大约 10 个协程运行..)

  3. 有不止一个角色,当另一个停止跟随时,似乎另一个角色的协同程序也停止了。如何让他们在不影响彼此的情况下单独关注和取消关注?

    /li>
0 投票
2 回答
4206 浏览

unity3d - Unity3D如何连接NavMesh和NavMeshAgent

我在编辑器中收到此错误

"SetDestination" can only be called on an active agent that has been placed on a NavMesh. 这些是我在解决问题时尝试的步骤:

  1. 将 NavmeshAgent 扭曲到 NavMesh 位置
  2. 手动将 NavMeshAgent 移动到 NavMesh
  3. 重新烘焙 NavMesh 并执行上述步骤
  4. 使用 NavMeshAgent 和新的 NavMesh 创建一个盒子
    • 有没有人有我可以使用的其他提示?