首页 > 解决方案 > 碰撞/刚体在小物体中无法正常工作

问题描述

我有一个简单的多米诺骨牌场景,您可以在其中单击多米诺骨牌并用力敲击它。起初我的多米诺骨牌比例为 (x=0.1), (y=0.6), (z=0.3) 1 应该是 1 米,它们倒下没有问题,但太慢了。根据刚体上的统一文档,这是完全有道理的。

使用正确的尺寸。GameObject 网格的大小比刚体的质量重要得多。如果您发现刚体的行为与您的预期不完全一致——它移动缓慢、浮动或碰撞不正确——请考虑调整网格资产的比例。Unity 的默认单位比例为 1 个单位 = 1 米,因此您导入的网格的比例保持不变,并应用于物理计算。例如,一座摇摇欲坠的摩天大楼与由玩具积木制成的塔楼的倒塌方式截然不同,因此不同大小的物体应建模为精确的比例。

所以我只是将多米诺骨牌的大小调整为 (x=0.01)、(y=0.06)、(z=0.03),这一次它们下降到所需的速度,但由于某种原因,它们停止下降并且不会敲下下一个多米诺骨牌。

示例 GIF

我不知道为什么会发生这种情况,但我可以猜测这是因为在计算物理时引擎不会浪费太多资源来计算用户甚至可能看不到的小物体。

修改质量似乎没有做任何事情,绘制和角度绘制都是 0 并且已经尝试了每种碰撞检测模式。

有什么解决方案或解决方法吗?

标签: unity3dgame-physicsphysicsrigid-bodiescollider

解决方案


根据我的经验,Unity 物理不喜欢太小的物体,因为它会引入舍入误差。游戏模拟通常不需要与您尝试登陆火星时相同的准确性。因此,我通常避免使用小于 0.1f 的刻度。

在您的情况下,我会将比例保持在 1.0f,而是尝试增加世界引力,将其从默认的 -9.81f 更改为 -98.1f(编辑 - 项目设置 - 物理)。或者将默认时间刻度从 1f 更改为 5f(编辑 - 项目设置 - 时间)。

尽量不要在一开始就做出太大的改变,因为它可能会在游戏的其他部分引入奇怪的效果。


推荐阅读