我有一艘飞船,它是一个刚体
我有一块地面,它是通过编程创建的
大多数情况下,这可以解决问题。我不会掉落到地面下。但有40%的时间我可以穿过墙壁。
为了解决这个问题,对于每个墙壁部分,我添加了一个标记为静态的子
如下图所示,我仍然能够有时穿过墙壁。
我应该做些什么才能避免穿过墙壁? 我已经尝试过以下方法:
Rigidbody
。 飞船上有一个MeshCollider
。该碰撞器设置为凸形。我有一块地面,它是通过编程创建的
Mesh
。该网格上有一个MeshCollider
。该碰撞器未设置为凸形。大多数情况下,这可以解决问题。我不会掉落到地面下。但有40%的时间我可以穿过墙壁。
为了解决这个问题,对于每个墙壁部分,我添加了一个标记为静态的子
GameObject
。该游戏对象具有BoxCollider
。我调整了碰撞器的大小,使其比墙壁部分大0.1。这意味着碰撞器重叠,不应有缺口可供穿越。如下图所示,我仍然能够有时穿过墙壁。
我应该做些什么才能避免穿过墙壁? 我已经尝试过以下方法:
将
Rigidbody
添加到地面上,并标记为动力学。为此,我完全删除了MeshCollider
并使用了所有的BoxCollider
。由于可以拥有凸多边形刚体,因此必须使用所有的BoxCollider
。 这并没有解决问题。从玩家中删除
MeshCollider
并使用单个BoxCollider
。此时场景中不再有MeshCollider
。 这并没有解决问题。两个
Rigidbody
都设置为连续碰撞检测。
我开始怀疑Unity3d物理系统是否起作用:/
Rigidbody.MovePosition
和Rigidbody.MoveRotation
来控制飞船的移动。 - Justin808