繁体   English   中英

立方体坠落地形 - Unity3D

[英]Cube Falling through the terrain - Unity3D

我知道有很多关于地形坠落的问题和答案。 我确实看过它们,但我认为我拥有的这个与其他所有不同。 我使用的是 Unity 版本 2019.4.15f1。

基本上,我得到了一个立方体和一个地形(没有图层设置,全部默认)。 立方体有一个盒子碰撞器和一个启用了重力的刚体。 地形只是一个简单的地形(没有树、没有草等),带有地形碰撞器和未检查重力的刚体。 我希望立方体会撞到地形并停下来(或一起向下移动)。 但是立方体直接穿过它(立方体在地面上方几米处,所以我确信立方体在时间 0 没有接触到地形)。 现在,如果我从地形中移除 RigidBody 组件,立方体确实位于地形上。 这是一个错误吗? 我想不出我做错了什么(以下是此设置的屏幕截图)。 场景 1 - 立方体设置

场景 1 - 地形设置

然后我继续做另一个测试,两个立方体,一个在另一个上面。 使用上面提到的同一个立方体,我现在取消选中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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM