Articles of navmesh

NavMesh的“带孔的多边形”三角剖分

为了好玩,我正在做一个小小的项目:作为第一步,我希望能够建立一个基于网格的世界(比如地牢守护者),为这个世界生成一个导航网格,然后让代理人漫步周围。 我已经做了大量的search,结果按照这个gamedev问题的答案给出的指示: 我如何生成一个瓷砖网格的导航网格? 现在,我已经完成了第一步,现在我已经有了代表可行走区域轮廓线的等值线。 这可能是这样的: 蓝线是可行走区域的轮廓线。 正如你所看到的,在这种情况下,由于这个区域是一个圆,所以有两条线定义了一个可行走的区域。 这是我卡住的地方:如果它是一个规则的多边形,我可能会实现某种三角网algorithm(网上有很多例子,我猜),但是我怎么去解决这个问题呢? 你有什么指针吗?

NavMeshAgent.CalculatePath – 如何正确使用?

我真的不知道如何使用这个function,而文档根本没有帮助。 这里是文档代码: public class ExampleClass : MonoBehaviour { public Transform target; private NavMeshAgent agent; void Start() { agent = GetComponent<NavMeshAgent>(); NavMeshPath path; agent.CalculatePath(target.position, path); if (path.status == NavMeshPathStatus.PathPartial) { } } } 这是我的代码: public class Movement : MonoBehaviour { NavMeshAgent agent; NavMeshPath path; void Start () { agent = GetComponent<NavMeshAgent>(); } void MoveToTargetLocation() { agent.SetDestination(targetLocation); […]

当找不到有效的path时,删除最less的Navmesh障碍物

所以我正在建造一座塔防(也就是玩家可以放置塔楼,让小怪走一条更长的路线到达目的地)。 我正在使用Unity的Navmesh系统。 每个敌方单位都有一个Navmesh Agent组件。 每座塔楼都有一个导航障碍组件。 path发现工作是完美的。 然而(如预期的那样),当该游戏完全阻挡到代理人的目的地的所有路线时,代理人简单地移动到最靠近其可到达的目的地并且坐在那里。 我需要的是检测何时发生…有些NoValidRoute()什么的,我还没有能够在Unity文档或谷歌search挖掘任何东西。 一旦我有了这些,我需要确定哪些Navmesh障碍物需要被破坏,以最less的障碍物数量来打开最短的路线。 (也就是说,如果只有一座塔可以打开,哪座塔会给我最短的路线)。 我发现在这个问题上严重缺乏任何信息。就我所知,没有人甚至试图这样做,或者要求帮助做这样的事情。 (至less不能和Unity的Nevmesh合作)。我认为A *目前还有一点(并且是我的意思是LOTS)。 提前致谢

surface.Bake(); 没有这样的命令

(re: https : //www.youtube.com/watch? v=n-RXnDGE72M∈dex= 12&list = PL4AZfZ_v6LZNn6LPUbYFyKJNlssdzlu9K 13分钟50秒) 当我尝试:表面= GetComponent(); surface.Bake(); 我得到一个错误消息:UnityEngine.AI.NavMeshSurface不包含烘烤和没有扩展方法的定义Bake的typesUnityEngine.AI.NavMeshSurface无法find“你是否缺less程序集引用 我正在努力争取2017.1的dynamicnavmesh工作。

NavMeshObstacle不起作用

我有NavMeshObstable的问题。 看这张图片: Selected Cube是具有NavMeshObstacle的对象。 当我向下移动时: 正如您所看到的,导航网格不会更改,而代理只是通过多维数据集。 这是该立方体的属性: 立方体不是静态物体,有障碍物。 为什么导航网格不更新甚至障碍阻挡的方式? 我在谷歌search这个,但没有发现似乎相关。 有没有我错过的东西? 任何建议将非常感激。

Unity Nav Mesh实例化问题

在过去的几个月里,我一直在做一个基于wave的僵尸游戏,所有的系统一直在运行,直到我升级到最新版本的Unity。 从那时起,在导航网格上产生一个僵尸,然后调用SetDesination就会抛出exception: "SetDestination" can only be called on an active agent that has been placed on a NavMesh. UnityEngine.AI.NavMeshAgent:SetDestination(Vector3) 僵尸产生了一个随机的重生点,他们的目的地设置如下: GameObject go; for (int i = 0; i < SpawnAmount; i++) { Vector3 location = new Vector3(transform.position.x + i + UnityEngine.Random.Range(-1, 1), transform.position.y, transform.position.z + i + UnityEngine.Random.Range(-1, 1)); go = Instantiate(enemyPrefab, location, spawnRotation) as […]

团结Navmesh神器

我有一个台阶上去的场景。 里面很好,即使它奇怪地与楼梯相交,也是如此: 在楼梯顶部的几何不是太花哨: 但是在顶部产生的导航网格有一个奇怪的缺失部分: 有人知道一个方法来清理这个?

在Unity导航网格上获取一个随机点

我试图在我的游戏中实现AI的随机移动。 这将使我能够在地图上随机添加儿童。 为此,我使用Unity的导航网格,但是我找不到一个随机坐标的方法(并避免在地面或封闭建筑物的中间等不可访问的区域中进行坐标)。 Unity的文档确实有这样一个例子,但是它也警告说,这个方法可能是非常昂贵的,并且不过是一个小范围内的powershell,并不能保证成功。 我发现的另一个方法是在地图上手动放置路标,然后将它们交给AI。 这对巡逻非常有效,但对于漫游来说很差,需要在非常大的地图上做很多工作。 有没有办法来要求navmesh上的坐标? 这样可以让我得到很远的点数,让AI可以用一条大path在很远的距离上移动,而不是做多条短path。

统一NavMesh工具的问题

我得到这个错误: 运行系统NavMesh Builder源网格组合网格被跳过,因为它不允许读访问 我检查了所有的模型,它具有读取权限。 我也注意到,在某些情况下取消选中静态checkbox会有帮助,而且我得到的这些错误的数量较less。

Unity3d基于导航网格algorithm

我正在Unity3d上开发一款游戏。 在这场比赛中,两支队伍将会在没有任何人际交往的情况下战斗 如果相同的队伍是相同的,战斗结果必须总是相同的。 这样,我必须在许多设备上再现相同的战斗,在每个设备中获得相同的结果。 战斗发生的地图是3D环境,所以我的士兵可以向任何方向移动。 士兵不能走在另一个士兵的同一个空间,所以我需要一个代理避税algorithm。 我有一些麻烦find上述问题的解决scheme。 为了达到“总是相同的结果”,我把这个战斗视为基于转向的策略游戏,在转弯之间几乎没有固定的时间间隔。 为了计算士兵的path查找,我正在使用Unity3d navmesh框架。 然后我根据“NavMeshAgent”'steeringTarget'属性手动移动我的代理。 但是这个方法并没有涵盖障碍避免algorithm,而且我的代理重叠。 所以,我正在寻找一个解决我的问题的方法,它应该是一个手动避障algorithm,或者是一种在固定的时间间隔内统一导航网格工作的方法,或者是一种全新的方法来寻找我的path问题。