[英]Cube Falling through the terrain - Unity3D
我知道有很多关于地形坠落的问题和答案。 我确实看过它们,但我认为我拥有的这个与其他所有不同。 我使用的是 Unity 版本 2019.4.15f1。
基本上,我得到了一个立方体和一个地形(没有图层设置,全部默认)。 立方体有一个盒子碰撞器和一个启用了重力的刚体。 地形只是一个简单的地形(没有树、没有草等),带有地形碰撞器和未检查重力的刚体。 我希望立方体会撞到地形并停下来(或一起向下移动)。 但是立方体直接穿过它(立方体在地面上方几米处,所以我确信立方体在时间 0 没有接触到地形)。 现在,如果我从地形中移除 RigidBody 组件,立方体确实位于地形上。 这是一个错误吗? 我想不出我做错了什么(以下是此设置的屏幕截图)。
然后我继续做另一个测试,两个立方体,一个在另一个上面。 使用上面提到的同一个立方体,我现在取消选中RigidBody 组件中的重力框。 所以这个立方体可以自由地漂浮在空气中。 正上方的另一个立方体具有完全相同的设置,但选中了重力框。 正如预期的那样,顶部立方体落下,粘在底部立方体的顶部并一起向下移动。 这证实了具有刚体和对撞机的两个对象确实相互作用。 那么为什么地形和立方体不以相同的方式相互作用呢? 它甚至没有在触发器上注册任何碰撞(我使用 onCollisionEnter 和 onTriggerEnter 进行检查)。 如果有人可以照亮我,我将不胜感激。
[更新] 好的,经过一番挖掘和测试,我弄清楚了原因。 地形不支持刚体(见下面的截图)。 事实上,我也尝试在平面上应用相同的建议,并确认平面也不支持刚体。 所以我认为这是因为地形不能采取物理行为。 您可能可以变换或旋转它,但您不能,例如,让一个非常重的 object 在一端跳跃并期望地形像跷跷板一样转动。 您可以通过从 Unity 创建一个默认地形、一个刚体来重现以下错误,然后选中“is kinematics 框”,然后取消选中“is kinematic 框”。 然后该错误将从控制台 window 中出现。 我希望 Unity 会自动在检查器本身中提示这个错误,而不是我试图摆弄但是哦..
尝试检查地形对撞机两个 object 必须有一个对撞机才能通过它。 当你有刚体时,网格和地形碰撞器也不支持连续碰撞检测。
使用刚体时有不同的碰撞检测模式。 您在多维数据集的刚体设置中选择离散的那个是高性能的,但可能只是 go 通过另一个刚体而不记录高速碰撞,我认为您的多维数据集具有很大的质量,因为它的质量很大。 您可以通过将 detectionMode 设置为 ContinuousDynamic 并减少立方体的质量来检查这一点。
有关更多信息,请查看: https://docs.unity3d.com/ScriptReference/Rigidbody-collisionDetectionMode.html
我有同样的问题,我有矿石,它将有盒子对撞机作为触发器来检查玩家是否可以挖掘矿石,但是因为它是触发器,所以它正在从地面上掉下来,所以我添加了另一个不是触发器的网格对撞机,或尝试将网格对撞机添加到地形
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.