微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

立方体穿过地形 - Unity3D

如何解决立方体穿过地形 - Unity3D

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

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

Scenario 1 - cube settings

Scenario 1 - Terrain settings

然后我继续进行另一项测试,两个立方体,一个一个。使用上述相同的立方体,我现在取消选中 RigidBody 组件中的重力框。所以这个立方体可以自由地漂浮在空气中。正上方的另一个立方体具有完全相同的设置,但重力框选中。正如预期的那样,顶部的立方体掉下来,粘在底部的立方体的顶部并一起向下移动。这证实了具有刚体和碰撞体的两个对象确实相互作用。那么为什么地形和立方体之间的交互方式不同呢?它甚至没有在触发器上注册任何碰撞(我使用 onCollisionEnter 和 onTriggerEnter 来检查)。如果有人能照亮我,我将不胜感激。

[更新] 好的,经过一些挖掘和测试,我找到了原因。地形不支持刚体(见下面的截图)。事实上,我也尝试按照建议在平面上应用相同的内容,并确认该平面也不支持刚体。所以我认为这是因为地形不能接受物理行为。您可能能够对其进行变换或旋转,但您不能例如让一个非常重的物体在一端跳跃并期望地形像跷跷板一样转动。 您只需从 Unity 创建一个认地形,为其创建一个刚体,然后选中“是运动学框”,然后取消选中“是运动学框”,即可重现以下错误错误将出现在控制台窗口中。 我希望 Unity 会在检查器本身中自动提示这个错误,而不是我试图摆弄,但哦,好吧..

enter image description here

解决方法

尝试检查地形碰撞器,两个对象必须有碰撞器才能穿过它。当您有刚体时,网格和地形碰撞器也不支持连续碰撞检测。

,

当使用刚体时,有不同的碰撞检测模式。您在 Cube 的 Rigidbody Settings 中选择的 Discrete 是高性能的,但可能只是通过另一个 Rigidbody 而不会以高速记录碰撞,我认为您的立方体由于其质量非常大而具有这种碰撞。您可以通过将 detectionMode 设置为 ContinuousDynamic 并减少立方体的质量来检查这一点。

欲了解更多信息,请查看: https://docs.unity3d.com/ScriptReference/Rigidbody-collisionDetectionMode.html

,

我遇到了同样的问题,我有矿石,它将以 Box collider 作为触发器来检查玩家是否可以挖掘矿石,但是因为它是触发器,它正在从地面掉落,所以我添加了另一个网格碰撞器,它不是' t 触发,或者尝试向地形添加网格碰撞器

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。