【发布时间】:2016-03-08 04:39:23
【问题描述】:
我有一艘船,那是 Rigidbody。船上有一个MeshCollider。这个碰撞器被设置为凸的。
我已经掌握了以编程方式创建的Mesh。该网格上有一个MeshCollider。这个碰撞器没有设置为凸的。
大多数时候,这是有效的。我不会从地板上摔下来。大约 40% 的时间我可以开车穿过墙壁。
为了解决这个问题,我为每个墙部分添加了一个子GameObject,标记为静态。这个GameObject 上有一个BoxCollider。我将对撞机的大小设置为比墙的截面大 0.1。这意味着对撞机重叠,不应该有间隙可以通过。
如下图所示,有时我仍然可以开车穿过墙壁。
我应该怎么做才能开车穿过墙壁?
我试过了:
也将
Rigidbody添加到地面,标记为运动学。为此,我将MeshCollider全部删除并使用了所有BoxColliders。我不得不使用所有BoxColliders,因为你可以有一个凸刚体。 这并没有解决问题。我从播放器中删除了
MeshCollider,并使用了一个BoxCollider。此时场景中不再有任何MeshColliders。 这并没有解决问题。Rigidbodys 都设置为连续碰撞检测。
我想知道 UNity3d 物理系统是否可以正常工作:/
【问题讨论】:
-
你如何移动这艘船?你是直接移动船的位置,还是使用像 AddForce 这样的 Rigidbody 方法?顺便说一句,别担心,Unity 的 3D 物理引擎“Nvidia PhysX”实际上非常强大。不幸的是,有很多错误可能归结为用户错误(这发生在我们所有人身上)。
-
@AquaGeneral - 我正在使用
Rigidbody.MovePosition和Rigidbody.MoveRotation来制作船的运动。