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

c# - Unity 5.4“设置目的地”只能在活动代理上调用,实例化时目的地错误

我正在尝试通过鼠标单击导航网格来生成士兵并将他们作为一个团移动。但我收到“只能在活动代理上调用“设置目标”错误。我在论坛中读到,这可能是由于从导航网格实例化到高或低造成的。但是无论我将生成点放在 y 轴上的哪个位置,都没有任何变化。我通常在 Y = 0 上生成它们似乎 Unity 在实例化时将我的预制克隆自动设置为 y = 0.303……我不知道为什么。我无法在场景视图中运行时在 y 轴上平移士兵。发生的另一个“有趣”的事情是,即使我在 Awake 上调用 getComponent,我也会为导航网格代理获得一个未分配的引用异常。我必须在一个单独的函数中调用它以使其分别工作以到达“设置目标”错误。

0 投票
1 回答
2280 浏览

c# - Unity - NavMeshAgent 不能使用多个角

我目前正在开发 Unity3D 游戏,并且遇到了导航网格代理的一些问题。我目前的目标是让敌人走向最近的玩家(会有 3 个)。一个我生成一个敌人,它会检查自己离哪个玩家最近。这是通过与玩家的剩余距离完成的,如下面的代码所示

在此代码段中,距离将从“<code>float.MaxValue”开始,并且(当玩家比当前距离更近时,将被设置为“<code>playerToFollow”,这是一个 GameObject。

问题出在这里:当玩家的路径有 0 或 1 个角时。导航网格代理将开始走向玩家。但是......只要路径包含超过 1 个角,则不会计算距离,因此返回agent.remainingDistance == float.PositiveInfinity.

这意味着距离(即float.MaxValue)小于剩余距离(float.PositiveInfity)。

有什么我可能会忘记的吗?请告诉我。我总是可以提供更多细节。

0 投票
1 回答
243 浏览

unity3d - 带有巨大体素的奇怪 NavMesh 烘焙

我正在尝试在我的原型中使用 Navmash 进行路径查找,但我遇到了一个问题,因为代理在足够接近目标时最终会出现的“线”间隔很大。

图片: 在此处输入图像描述

红色方块是立方体应该结束的位置,但如您所见,代理所在的体素线位于方块的中间。关于如何修复它的任何线索?

我已将体素大小设置为最小值(0.02),结果仍然相同。

谢谢!

0 投票
0 回答
449 浏览

c# - 在不使用代理的情况下检测 OffMeshLink

我正在使用 NavMesh 寻路解决方案进行 AI,由于某些限制(例如当雕刻对象靠近时传送等),我不想使用 NavMeshAgent,

因此,我做了一种融合,在 NavMesh.CalculatePath() 的路径上移动刚体,到目前为止效果很好,但我无法检测到路径上的 OffMeshLinks(因为它只是 Vector3 的数组)。

我可以像上面那样使用 NavMesh.Raycast() 来“欺骗”一点,但它并不是一直都在工作,有时会检测到不是一个的 OffMeshLinks

提前致谢 :)

0 投票
1 回答
1250 浏览

unity3d - Unity 中是否没有用于在代码中以编辑器模式构建 navmesh 的类?

之前是 NavMeshBuilder,但在 5.5 版本中没有这样的类。

如何在编辑器模式下在代码中烘焙 NavMesh?

编辑 1

我不想在运行时烘焙 navmesh。我要做的就是通过我的代码而不是导航选项卡在编辑器模式(不是播放模式)下烘焙 navMesh。还有可能吗?只需调用构建导航网格的方法。

0 投票
1 回答
454 浏览

c# - 似乎无法创建 NavMeshAgent 变量

我正在自学Unity。我已经开始开发我想做的游戏应用程序。在这个项目中,我想使用 NavMeshAgent 让“npc”找到它附近的项目并去抓取它们。

我确实看到了游戏对象上的组件,但是当我试图从脚本中访问它时,我无法创建具有 NavMeshAgent 类型的变量:就像没有这样的东西!

我需要导入一些东西还是缺少一些东西?我看过教程,甚至尝试了 100% 相同的代码,但它无法识别 NavMeshAgent。

例子

如果我做 :

然后我们创建了一个名为“gameObject”的变量,如果我想创建一个 NavMeshAgent,它现在是 GameObject 的类型,例如:

然后它将无法识别“NavMeshAgent”并且编译器说它是一个错误。

我应该怎么办?

0 投票
3 回答
4452 浏览

unity3d - 什么会导致 NavMesh 代理计算无效路径?

问题描述

我正在为我的 NavMesh 代理计算无效路径而苦苦挣扎,而显然没有任何理由。当他们已经在使用初始有效路径移动时,有时会出现问题。

经纪人找不到路

在上图中,目的地是左上角的圆锥。(不要介意 NavMeshAgent 的方向箭头,我尝试手动移动代理以尝试“解锁”他)

  • 实例化时,我要求我的代理计算他们到 NavMesh 上给定目标点的路径(我使用NavMesh.SamplePosition来确保目标点在 NavMesh 上)。一切正常。特工找到了自己的路并开始向他的目标移动
  • 但是,在旅途中,突然间,他迷失了自己,而NavMesh从第一步开始就没有改变。我没有问他任何事情,没有新路径的新计算。

测试的解决方案

  1. 检查目的地在 NavMesh 上

  2. 检查了我的代理的区域掩码,以确保他们可以找到通往目的地的路径,尽管 NavMesh 的各个区域

  3. 如果代理的路径无效,则检查几乎每一帧。CalculatePath如果是这样,使用or计算一个新的SetDestination。有时,它有效,有时无效。

  4. 在整个场景中禁用我的所有 NavMeshObstacle(我的代理没有任何 NavMeshObstacle 在他们身上,也没有在他们的孩子身上)

  5. 在初始位置和最终目的地之间添加更多步骤

  6. 禁用代理的AutoRepath属性

  7. 计算路径,存储所有角落并使用与此类似的方法一次设置我的代理的目的地

注意:当另一个代理推动我的第一个代理时,后者似乎会醒来并找到它的路径。

0 投票
0 回答
3613 浏览

c# - 未能创建代理,因为它离 NavMesh 不够近

我有动态制作导航网格代理的第三方包。但它在创建时显示此警告

未能创建代理,因为它与 NavMesh UnityEngine.Object:Instantiate(GenericIndividual) STB.PACS.GenericIndividualPoll:.ctor(GenericIndividual) 不够接近(在 Assets/STB/PACS/Source/System/GenericIndividualPoll.cs:48) STB.PACS.IndividualPath:Start()(在 Assets/STB/PACS/Source/Sys

下面是一些图片:

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
815 浏览

unity3d - Unity 附加场景 + 导航网格

我在统一 5.5.1f 中有 3 个场景:

  1. 场景基础是永久性的。(控制器 + 播放器 + 管理器...) + 场景 1 的导航网格。

  2. 场景 1 + navmesh 在他自己的场景文件夹中。

  3. 场景 2 + navmesh 在他自己的场景文件夹中。

当我开始游戏时。我的基础 + 场景 1 具有正确的导航网格。但我认为它使用基本场景的导航网格(导航网格场景1)。

当我去场景 2 时,场景 2 不加载场景 2 的导航网格。

我在场景 2 中也有我的基本场景(navmesh scene1)的导航网格。

我试图删除基础场景的导航网格,但如果我这样做,所有的敌人都会被冻结。

请问我该如何解决这个问题。?

谢谢你的帮助。

0 投票
2 回答
1381 浏览

c# - Unity NavMesh on a Sphere Unity 5.6 导航

在 Unity 5.6 中,NavMesh / Navigation 在某些部分发生了变化。我的问题是:

现在是否可以创建一个覆盖整个球体的导航网格?

谢谢您的回答!