我正在做一个使用NavMeshAgent的研究项目。我目前有一个非常简单的场景,一个智能体在开始时产生,穿过一个“入口”触发对撞器,一个“退出”触发对撞器,然后最终与一个带有结束场景的脚本的“驱逐者”触发对撞器发生碰撞。没有什么复杂的,不应该发生物理碰撞。
我已经在编辑器和-batchmode -nographics中通过一个可执行文件运行了一些模拟,该可执行文件在场景结束时记录基本的运行时统计信息。我发现在Unity编辑器和CLI执行中,场景的执行时间偶尔会达到峰值。我最终发现了实际发生的事情-- NavMeshAgent组件从我的代理中分离出来,漂浮在它的前面。

在这张图片中,你可以看到智能体上的两个对撞机(一个非常小的穿过他的身体用于物理,另一个较大的用于他的“个人空间”),退出触发对撞机(右侧的巨大红色框)和漂浮在两者之间的是一个胶囊形状的NavMeshAgent组件。
我使用了this unity page,详细介绍了如何与动画师一起使用NavMeshAgents,但在重新创建了他们推荐的设置后,我仍然有这个问题。
有没有人有任何解决方案可以将NavMeshAgent锚定到代理本身?
发布于 2018-03-02 11:56:26
我遇到了完全相同的问题,将NavMeshAgent组件设为子组件并在每个帧中设置NavMeshAgent的本地位置就解决了这个问题。
private NavMeshAgent agent;
void Awake()
{
agent = gameObject.GetComponentInChildren<NavMeshAgent>();
anim = gameObject.GetComponent<Animator> ();
}
private void Update()
{
agent.transform.localPosition = Vector3.zero;
// todo:
// set animator
}
void OnAnimatorMove ()
{
// Update position to agent position
transform.position = agent.nextPosition;
}https://stackoverflow.com/questions/49061205
复制相似问题