Unity 版本:6.3 lts(3.9,目前正在尝试更新到最新版本以解决此问题)

另外使用:

  • rigging 和 AI 导航包的最新版本
  • 众多其他包(然而这些包在本问题中并未被使用)

我最近遇到了一个非常烦人的问题链。首先,我需要描述一下一些架构:我有一个 GameObject,允许我驾驶任何已设置为实体的 GameObject。这个功能在几个月里都没有遇到问题(包括角色切换)。但是最近,我正在为它们进行更新(IK Rigging 相关),这导致了一个不断恶化的问题链。

新角色工作得非常好! 但是在我输入的移动上,它无法移动,当它是活动角色时。经过了几个小时的测试,我一度认为问题出在 IK Rigging 上,但经过逐步缩小范围后,我发现问题可能出在我的移动方法上:

  • 采样一个 navmesh 位置,使用角色速度和当前位置,然后将该位置设置为当前位置,通过 Time.DeltaTime。

使用一个 debug.log 我能够确定 navmesh 采样只返回 GameObject 的位置(对于坏角色,相同的日志对于工作角色是预期的)。此问题最初只发生在我的新 GameObject 上。测试直接在新角色和一个老角色(已测试和工作)之间后,老角色现在表现得与新角色一样。

我没有做任何改变会导致此问题。然而,我已经修改了他们的 navmesh 代理和 navmesh 本身,导致问题链变得更加复杂。navmesh 正在随机创建墙壁,使代理停止在这些墙壁上。它是一个单独的 navmesh,没有连接。这些改变不应该影响到如此广泛的范围,因此我不愿意将其归咎于 navmesh。

奇怪的是,他们都有一些默认 NPC 行为,所有这些行为都正常工作(至少到目前为止)。但是玩家相关的问题就是问题。截至本帖,驱动移动的方法已经不再被调用。所有这些都没有改变。

同时,Unity 还在随机抛出错误,经过研究,这些错误应该在很长时间前就已经修复了。因此,我正在更新以解决此问题,但我的代码中出现的错误也开始出现了。

我开始担心这个项目可能已经开始出现问题,因此才发出了这个帖子。