Unity3D对撞机穿过其他对撞机



问题: 上的网格碰撞器一些刚体对象正在通过其他对象上的碰撞器。

我尝试过的东西:

假设A是连接了RigidBodyGameObject,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 DetectionContinuous

不起作用的原因

  1. 您正试图使用具有(速度>计算机的帧速(的碰撞,因此,帧没有正确捕捉到碰撞器,有时捕捉到,有时捕捉不到。

  2. 您正在使用transform.translate或position等移动游戏对象。如果是这样,请确保使用Rigidbody Related功能进行定位、旋转。

第一个问题的解决方案图像

这似乎是一个常见的大问题,我已经为同样的问题挣扎了好几天,终于解决了它,所以我觉得我应该强调一件重要的事情:

通过MovePosition移动Rigidbody,而不是直接改变其position字段,也不是改变保持GameObject的位置。

通过";错误的";方式将";"传送";你的刚体,在那种情况下物理学不会完全解决它。

我假设-包含网格组件的游戏对象非常小(小于0.7大小(x,y,z(,所以游戏引擎很难检测到它(

以及

  • 对于碰撞对象,必须至少将一个刚体组件附加到一个对象

相关内容

  • 没有找到相关文章

最新更新