我的船只有Rigidbody
。该船上有一个MeshCollider
。该对撞机设置为凸面。
我已经了解了以编程方式创建的Mesh
。 Mesh上有一个MeshCollider
。此对撞机未设置为凸面。
大多数时候,这都有效。我不会摔倒在地。大约40%的时间我可以穿过墙壁。
试图解决这个问题,对于每个墙部分,我添加了标记为静态的子GameObject
。此GameObject
上有BoxCollider
。我将对撞机的尺寸设置为比墙壁的截面大0.1。这意味着碰撞器重叠,并且不应有间隙通过。
正如您在下图所示,我仍然可以在墙上开车一段时间。
我该怎么做才能开车穿过墙壁?
我试过了:
也将Rigidbody
添加到地面,标记为运动学。为此,我将MeshCollider
全部删除,并使用了所有BoxCollider
。我必须使用所有BoxCollider
,因为你可以拥有一个凸起的刚体。 这并没有解决问题。
我从播放器中删除了MeshCollider
并使用了一个BoxCollider
。此时,场景中不再有MeshCollider
个。 这并没有解决问题。
两个Rigidbody
都设置为连续碰撞检测。
我很想知道UNity3d物理系统是否有效:/
答案 0 :(得分:1)
太多的事情可能是一个接一个的问题,看看哪个适合你。
如果你想将网格碰撞器与凸面一起使用,必须将RigidBody附加到它上面。将 RigidBody附加到对象。
由于您使用代码生成墙,因此请确保为分配网格对撞机的墙具有< = 255 三角形。 Convex Mesh碰撞 限制到 255个三角形。如果墙的三角形> 255,凸起失败。
由于它有时可以工作但有时会失败,所以将墙和船的 RigidBody碰撞检测更改为连续动态。
使用复合碰撞器。移除船上的网格对撞机,并在您的船上使用多个Box Colliders,以获得您想要的感觉。
答案 1 :(得分:0)
调整固定和最大允许时间步长。我将“固定时间戳”设置为0.0005