【问题标题】:How can I use compression forces in Unity3d?如何在 Unity3d 中使用压缩力?
【发布时间】:2014-09-25 02:48:48
【问题描述】:

我想使用压缩力使分离的物体保持悬浮在空中。这是我正在尝试完成的照片:

理想情况下,它们会保持在上述位置,直到受到另一股力量的作用。 然而,这些盒子变得很不稳定,似乎忽略了彼此之间的摩擦。

如果我把它们靠得更近,它们就会向各个方向爆炸,如果我把它们完全接触或分开,它们就会直接掉下来。

这在 Unity3d 中可行吗?或者这超出了标准物理引擎的范围。

【问题讨论】:

  • 所以你想重力不会影响它们
  • 盒子是否有高摩擦力的物理材料?
  • 此问题属于 Stack Exchange 网络中的另一个站点:gamedev.stackexchange.com
  • 我希望重力影响它们,只是,如果你用手指捡起三个方糖,中间的立方体会保持原位,因为它被挤压在两个外面的立方体之间。如果这有意义吗?另外,是否有所有前缀堆栈交换的摘要,以便我知道将哪些问题放入哪个?

标签: unity3d unityscript physics-engine


【解决方案1】:

我还没有看到任何物理引擎在没有代码干预的情况下实现了这一点。基本上,您必须使对象不可移动,直到某些事件触发它们可移动。

物理引擎中没有“压缩力”这样的东西。这里的问题是,即使是最轻微的压缩也意味着两个物体相交(重叠),任何刚体物理引擎都会尝试通过将物体移开来解决这个问题。

软体引擎可以应对这种情况,但它们是特殊用例,并不常用。例如 BeamNG.drive 使用软体物理引擎来模拟汽车的变形,这也不理想,因为您有时会注意到即使是坚固的金属连接也会对它们产生轻微的晃动。

您只能在刚体物理引擎中对这种行为进行建模,前提是您要通过关节连接实体以使其悬浮在空中,但即便如此,它们也将被允许相交(可能看起来不太好,除非相交是最小)或者他们会开始移动,可能会变得疯狂。或者就像我在开始时所说的那样,将尸体悬挂在他们的位置上——让他们睡觉,确保一旦其中一个人醒来,他们都会醒来。类似的东西。

【讨论】:

  • 感谢您的回答!我没有听说过软体,我会研究一下。我猜标准(刚体)物理引擎除了传递接触力和模拟一些摩擦元素之外所做的不多 -> 可以这么说吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-08
  • 1970-01-01
  • 2015-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多