【问题标题】:box2d, setTransform and collisionsbox2d、setTransform 和碰撞
【发布时间】:2013-02-02 17:29:10
【问题描述】:

我正在使用 body.setTransform 来移动我的一些对象。 我知道这很糟糕,但这正是我需要的方式 - 身体遵循一定的路径。当这样的身体被子弹击中时 它停止在路径上移动(不再调用 body.setTransform()) 它让物理起作用。

问题在于,有时身体会发狂——似乎 接触力等应用于不同的身体值(坐标等)。 结果它开始旋转,苍蝇抛出其他物体。

这显然是 body.setTransform() 的问题,因为当我转身 沿着所有物理学的道路前进是好的。我的谷歌发现也证实了 body.setTransform() 可能会搞砸物理。

我试图在接触后将所有速度设置为 0。取消联系 冲击,身体不动。但它的“物理数据”似乎仍然被破坏了—— 事后被什么东西击中时,它的动作就不正确了。

有什么方法可以“重置”使用 body.setTransform() 调和的主体 让它再次正常运行?

【问题讨论】:

  • 身体本身并没有吓坏。是渲染器没有正确渲染它。

标签: box2d transform libgdx collision


【解决方案1】:

使用b2MouseJoint 沿着路径移动身体并保持正确的身体行为。

【讨论】:

  • 我从未使用过它,但值得一试。我还有一个问题。该路径用于避开 STATIC 障碍物,它与 body.setTransform() 完美配合。还有身体可能碰到的动态障碍。即使身体遇到动态障碍,它也不会影响它保持在好的路径上。它只是推动了动态障碍,仍然避开了静态障碍。如果我在这种情况下使用 MouseJoint,当它碰到动态障碍物时,身体路径会受到影响吗?这个关节的强度足以让身体保持在路径上吗?
  • @Dzik:所有的身体都会影响它。据我所知,鼠标关节只是 b2DistanceJoint - 所以我会尝试使用参数,但我认为它会足够强大。为了避免与静态物体发生碰撞,您可以使用接触过滤(b2Filter)
猜你喜欢
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 2012-06-10
  • 2017-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多