2016-08-05 66 views
0

我已经试过了每一个从取消选中矩阵框,并删除球对撞机。我遇到的问题是gameobjects不会停止通过对方。我不知道发生了什么。我有一张照片:enter image description here如何通过unity3d阻止两个gameobjects彼此通过

+0

你为什么要删除球体碰撞器?那里有多少个对撞机?如果你勾选'Trigger',它就可以穿透它。有与速度有关的渗透因素。有时高速忽略碰撞。您可能需要多个碰撞器与您的npcs。 –

+0

你如何移动你的gameobject? – TheDjentleman

回答

0

首先,不要删除碰撞体,并确保它们没有设置在触发器上(这使对撞机可穿透)。另外,你正在使用球形对撞机来制作相当复杂的网格,所以我建议使用MeshCollider,它会根据网格生成它。

其次,重新检查你如何移动物体。如果给予太多的力量,它可能会冲击另一个对撞机,而不会离开它(想象你突破了障碍,并且在它内部,你无法获得足够的速度来再次突破它)。如果您使用AddForce()而不是增加transform.velocity,可能会发生这种情况。

第三,什么控制这些gameobjects?播放器或NavMeshAgent?因为,我认为,如果他们受AI(NavMeshAgent)控制,他们应该避开彼此的路径,不应该相互碰撞。但是,我可能在这个问题上是错误的。

+0

我没有导航网格,一切都检查。我有一个脚本。我会尝试导航网格。 –

+0

我使用导航网格,它的工作表示感谢。 –

+0

我认为最简单的方法来避免这种情况是,如果对象几何不均匀,则使用meshcollider,否则应避免使用meshcollider,如果您使用的是meshcollider,请记住,其中一个应该有meshcollider组件的刚体和凸选项 –