问题标签 [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.
c# - 只能放置第一个 NavMeshAgent
我遇到了只能创建第一个 NavMeshAgent 的问题。
首先,我为 NavMesh 烘焙对象选择了所有网格渲染器:
我对烘焙进行了微调,使其具有恰到好处的细节。如果我在烘焙代理选项中使用更大的半径,则各种对象周围的黑色间隙会更大:
我在后坡道的任一侧放置了两个生成器(其中有白色球体的那个)。这些是不可见的,但在脚本中,NavMeshObjects 以一定的间隔放置在这些位置上,并将其目的地设置为其他游戏对象之一。
第一个工作正常,但生成器队列中的其他 17 个 NavMeshObject 都不能设置其目的地。
我收到错误消息"SetDestination" can only be called on an active agent that has been placed on a NavMesh.
,我知道对此存在疑问。但我已经尝试了我发现的所有建议,包括烘焙 NavMesh,使用 设置 NavMeshAgent 的初始位置Warp
,并确保这些点位于网格上。
c# - Unity navmesh 代理
我正在开发一款 RTS 游戏。我做了一个正常的移动脚本,我增加了代理的停止距离,这样他们就不会互相看着,也不会抽那么多。但他们还是互相打了起来。
我找不到让代理互相避开而不是互相推挤的方法。或者以某种方式忽略物理,同时仍然试图避免彼此。这是点击移动的代码
unity3d - 如何使用 Nav Mesh Agent 制作玩家模型以跳转
我在带有 Nav Mesh Agent 的 Player 模型上有一个程序代码,它允许它在单击时环游世界,但我试图让它跳跃并且似乎没有实现它。
这是我的代码,不知道要添加或删除什么
}
c# - 添加 navmeshAgent 导致游戏冻结
我有一个脚本,它会在我创建的地形上延迟一段时间后生成敌人。它适用于创建的前三个敌人,但是当它第四次添加 navmeshagent 时,它会冻结整个游戏。
我使用服务员和 spawnWait 将其延迟。它似乎总是在创建第四个对象并将 navmeshagent 添加到它之后立即冻结和崩溃。我发现它可能是从场景的重拍中发现的。有什么办法可以阻止它冻结或重新烘烤。或者有没有更好的方法来使用 navmeshagents 在设定的位置生成敌人?
c# - 更新 RuntimeAnimatorController 后 GameObject 的变换被错误更改
在 Unity 中,一个游戏对象具有 NavMeshAgent 和 Animator 组件。
我在运行时通过以下方式在名为“changeAnimatorController”的函数中更改 Animator 组件的 runTimeAnimatorController:(语言 - C#)
现在调用这个函数在以下两种不同方式调用时的工作方式不同: 1. 如果我直接从脚本调用函数'changeAnimatorController',我的 Animator 控制器将更新为新的,但游戏对象的位置正在更改为游戏对象的位置在游戏开始之前存在的原始位置,并在下一帧更新到正确的位置。
例如,在游戏开始之前,我的游戏对象位于 (0,0,0) 位置。游戏开始后,在特定时间,我的游戏对象通过动画移动到 (10,0,0)。现在,如果我调用函数“changeAnimatorController”,游戏对象的位置将更改为 (0,0,0) ,但在下一帧再次更新为 (10,0,0)。
2.如果我从当前动画控制器(我将要替换)中存在的动画剪辑事件调用函数'changeAnimatorController',则游戏对象的位置将更改为游戏开始之前存在的游戏对象的原始位置,并且永远不会得到在任何帧中更新为正确的值。
例如,在游戏开始之前,我的游戏对象位于 (0,0,0) 位置。游戏开始后,在特定时间,我的游戏对象通过动画移动到 (10,0,0)。现在,如果我从动画剪辑的事件中调用函数“changeAnimatorController”,gameObject 的位置将更改为 (0,0,0) 并且永远不会回到 (10,0,0)。但令我惊讶的是,如果 gameObject 的 navMeshAgent 的 baseOffset 在以下列方式更新 RunTimeAnimatorController 后立即更新为某个值,则它的位置将更新为正确的值(上例中的(10,0,0))。
在上述所有情况下,在更改游戏对象的 RunTimeAnimatorController 后,游戏对象的旋转将更改为游戏开始之前存在的游戏对象的原始旋转。例如,在游戏开始之前,我的游戏对象的旋转是 (0,0,0)。游戏开始后,在特定时间我的游戏对象的旋转是 (120,0,0) 通过动画。现在如果我调用函数'changeAnimatorController',游戏对象的旋转将变为(0,0,0)并且永远不会回到(120,0,0)。
知道为什么会这样吗?为什么从不同的地方调用函数'changeAnimatorController'的工作方式不同?在运行时更改 Animator 的 runTimeAnimatorController 的正确方法是什么?
unity3d - Unity 的 NavMesh 代理在 navmesh 边缘出现故障
我最近开始玩弄 AI 和 Unity 的内置寻路功能。到目前为止,我还没有遇到任何更大的麻烦,但昨天我导入了一个从底部到顶部的路径的山地模型。
我的 AI 游戏对象由 Rigidbody(设置为运动学)、Capsule Collider 和 NavMesh Agent 组成。我生成了 NavMesh 并将最大坡度设置为 40 度,当 AI 跟随我的玩家或沿着指定的路径(航路点)行走时,它导航得很好,但是当我尝试在 AI 半径内的 NavMesh 上选择一个随机位置时,它会出现故障并开始几秒钟后摇晃,通常是在目的地靠近 NavMesh 的边缘时。我已经拍摄了两个视频,从昨天开始我一直在努力解决这个问题。
我试过完全移除刚体,改变避障设置,降低最大坡度,但到目前为止没有任何效果。
这是它的样子:
我用来获取随机位置的代码:
我真的很感激任何帮助解决这个问题。
c# - Unity“设置目的地”只能在活动代理上调用
我尝试了所有方法,我手动烘焙了导航网格,但仍然无法正常工作。如果您知道如何解决该问题,请帮助我。
unity3d - Unity3D:一次将运动约束到一个轴
我正在 Unity 中制作等距游戏。我使用 3d 立方体作为我的 2d 精灵的代理。我已经设置了动画,以便精灵在它行走的方向上转动,但是立方体不是一次在一个轴上行走。相反,立方体在 x 和 z 轴上移动,这弄乱了我的动画。我想如何约束立方体一次只走一个轴,以便动画正确显示。