问题: 上的网格碰撞器一些刚体对象正在通过其他对象上的碰撞器。
我尝试过的东西:
假设A是连接了RigidBody
的GameObject
,B是带有对撞机的普通GameObject
。
- 给A一个凸网格对撞机
- 给A一个非凸网格碰撞器
- 给B一个凸网格对撞机
- 给B一个非凸网格对撞机
- 给B一台箱式对撞机
- 给B一个凸网格和长方体对撞机
- 给B一个非凸网格和长方体对撞机
- 调整刚体的重量
我已经在A和B的所有组合中尝试了所有这些。
此外,
- 对撞机未标记为触发器
- 所有对象都在默认图层上(0(
- 检查是否为运动学;这样做似乎可以使重力停止影响物体,所以我把它当作假的
约束:我希望A使用网格碰撞器,因为涉及的大多数对象都比较复杂,而将其他碰撞器安装到它们上需要一段时间。
怪异行为:我有一些对象同时具有刚体和凸网格对撞机,其中碰撞与非凸网格对撞器可以很好地进行。这与其他游戏对象不一致。这些对象具有所有相同的设置。
如果相关的话,我使用的是统一版本2019.3.11f1。
正在使用的对象来自此程序包。具体来说,抽屉上有刚性主体的文件柜工作得很好。桌子、办公椅、钢笔和打开的笔记本电脑都从"地板"上掉了下来(一个立方体,上面测试了所有上述对撞机(。
是否检查了通过其他对撞机的刚体对象的"isKinetic"?如果是,请取消选中它,以便外力影响它。
编辑如果网格碰撞器与其他网格碰撞器碰撞,您还需要在网格碰撞器上单击"凸","凸"网格碰撞器限制为255个三角形,未穿过的对象在几何体中的三角形是否超过255个?
我假设您已在gameObject的RigidBody
中将碰撞检测设置为Discrete
,如果是,请确保在gameObject的RigidBody
中选择Collision Detection
到Continuous
。
不起作用的原因
-
您正试图使用具有(速度>计算机的帧速(的碰撞,因此,帧没有正确捕捉到碰撞器,有时捕捉到,有时捕捉不到。
-
您正在使用transform.translate或position等移动游戏对象。如果是这样,请确保使用
Rigidbody Related
功能进行定位、旋转。
第一个问题的解决方案图像
这似乎是一个常见的大问题,我已经为同样的问题挣扎了好几天,终于解决了它,所以我觉得我应该强调一件重要的事情:
通过MovePosition
移动Rigidbody
,而不是直接改变其position
字段,也不是改变保持GameObject
的位置。
通过";错误的";方式将";"传送";你的刚体,在那种情况下物理学不会完全解决它。
我假设-包含网格组件的游戏对象非常小(小于0.7大小(x,y,z(,所以游戏引擎很难检测到它(
以及
- 对于碰撞对象,必须至少将一个刚体组件附加到一个对象