【问题标题】:How can I prevent a ball from sticking to walls in Box2D?如何在 Box2D 中防止球粘在墙上?
【发布时间】:2011-03-21 17:35:34
【问题描述】:

我正在尝试使用 box2d。 我似乎有一个问题,人们将其描述为粘墙

我有一个球和一个桨

我正在使用我能找到的所有基本推荐尺度,10m 世界,1m 球

球具有以下属性:

shape: circle (.5f radius)
size: 1.0f
density: 1.0f
restitution: 1.0f
friction: 0.0f

用来移动球的桨是1.5m,它具有以下特性: 形状:

circle (.75f radius)
size: 1.5f
density: 10.0f
restitution: 0.1f
friction: 0.0f

如您所见,所有对象的摩擦力均为 0。

球经常被卡在墙上滚动或完全卡在 90 度角

我在想我可以检测到与墙壁的碰撞并触发 applyLinearImpulse 将球从墙壁上移开。

【问题讨论】:

  • 我不得不说,你的问题的标题立刻让我怀疑你是不是阿拉斯加的裸体主义者。

标签: box2d box2d-iphone jbox2d


【解决方案1】:

您需要降低弹性碰撞的最小速度阈值。

通过将b2Settings::b2_velocityThreshold 减少到接近 0 来做到这一点。

【讨论】:

  • 看起来像我需要的。这有什么合理的价值?最初我假设将其设置为 0.f 将确保它永远不会卡住,但这会产生不利影响吗?
  • 从零开始,然后向上工作 - 0.1 应该没问题。 0 只有当你想让物体靠在表面上时才会产生不好的效果——它们会不断地摇晃。
  • 听起来不错。非常感谢您的帮助。
  • 有没有办法在不修改源代码中的定义的情况下修改该值?糟糕的设计。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
相关资源
最近更新 更多