【问题标题】:Unity3D Collider Passing Through Other CollidersUnity3D 碰撞器穿过其他碰撞器
【发布时间】:2020-05-06 02:18:29
【问题描述】:

问题:一些刚体物体上的网格碰撞体正在穿过其他物体上的碰撞体。

我尝试过的事情:

假设 A 是带有 RigidBodyGameObject,而 B 是带有碰撞器的普通 GameObject

  • 给 A 一个凸网格碰撞器
  • 给 A 一个非凸网格碰撞器
  • 给 B 一个凸网格碰撞器
  • 给 B 一个非凸网格碰撞器
  • 给 B 一个盒子碰撞器
  • 给 B 一个凸面网格和盒子碰撞器
  • 给 B 一个非凸网格和盒子碰撞器
  • 调整刚体的重量

我已经在 A 和 B 的所有组合中尝试了所有这些。

另外,

  • 碰撞器未标记为触发器
  • 所有对象都在默认图层 (0) 上
  • 检查 isKinematic;这样做似乎使重力不再影响物体,所以我把它留作假。

约束:我希望 A 使用网格碰撞器,因为所涉及的大多数对象都比较复杂,并且将其他碰撞器安装到它们上需要一段时间。

奇怪的行为:我有一些物体同时具有刚体和凸网格碰撞器,其中碰撞与非凸网格碰撞器一起工作正常。这与其他游戏对象不一致。这些对象具有所有相同的设置。

如果相关,我正在使用统一版本 2019.3.11f1。

使用的对象来自this package。具体来说,抽屉上带有刚体的文件柜工作正常。桌子、办公椅、笔和打开的笔记本电脑都从“地板”(上面测试过所有碰撞器的立方体)掉了下来。

【问题讨论】:

    标签: unity3d mesh-collider


    【解决方案1】:

    您是否对正在通过其他对撞机的刚体对象进行了“isKinematic”检查?如果是这样,请取消选中它,以便外力影响它。

    如果网格碰撞器与其他网格碰撞器发生碰撞,您还需要在网格碰撞器上单击凸面,凸面网格碰撞器仅限于 255 个三角形,未通过的对象是否具有超过 255 个几何形状的三角形?

    【讨论】:

    • 我会更新我的答案。我没有选中 isKinematic。当我尝试检查它时,重力似乎停止影响物体。
    • 你希望它不被选中
    • 是的,很抱歉,如果不清楚,它不会被检查。
    • 你能把你的组件截图粘贴到正在通过的对象上吗?
    • 我刚刚设法让它工作。我在我的传送区域顶部添加了一个带有网格对撞机的飞机。 SteamVR TeleportArea 脚本似乎干扰了对撞机。然后我给所有带有刚体凸网格碰撞器的对象
    【解决方案2】:

    我假设您在游戏对象的RigidBody 中将碰撞检测设置为Discrete,如果是这样,请确保在游戏对象的RigidBody 中选择Collision DetectionContinuous

    这不起作用的原因

    1. 您正在尝试使用具有(速度 > 您的计算机的帧速度)的碰撞,因此,帧没有正确捕捉碰撞器,有些时间捕捉,有些时间无法捕捉。

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

    Solution Image For First Problem

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 2022-08-20
      • 1970-01-01
      • 2015-08-03
      相关资源
      最近更新 更多