2013-02-18 204 views
2

我使用body.setTransform来移动我的一些物体。 我知道这是不好的,但它只是它需要在我的情况下 - 机构遵循特定的路径。当这样的物体被子弹击中时,它停止在路径上移动(body.setTransform()不再被称为) 并且它允许物理学起作用。box2d,setTransform和碰撞

问题是,有时候身体会发痒 - 它好像接触力等被应用到不同的身体值(坐标等)。 因此,它开始旋转,苍蝇投掷其他尸体。

这显然是body.setTransform()的问题,因为当我将 移动到路径上时,所有物理都没有问题。我的谷歌调查结果也证实 body.setTransform()可能搞砸了物理。

我试图在接触后将所有速度设置为0。这取消了联系 影响和身体不动。但是它的'物理数据'似乎仍然被破坏了 - 当它被事后击中时,它不会正确行事。

是否有任何方法来“重置”使用body.setTransform() 锻炼过的身体,以便它再次正常工作?

+0

身体本身并没有吓倒。渲染器没有正确渲染它。 – Dzik 2013-02-18 17:18:41

回答

2

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

+0

我从来没有使用它,但它可能是值得一试。我还有一个问题。该路径用于避免STATIC障碍物,并且与body.setTransform()完美配合使用。也有身体可能遇到的动态障碍。即使身体遇到动态障碍,它也不会影响它保持良好的路径。它只是推动DYNAMIC障碍,仍然避免STATIC。如果我在这种情况下使用鼠标连接,当碰到动态障碍时身体路径会受到影响吗?这个关节强壮到足以让身体保持在路上吗? – Dzik 2013-02-18 12:35:51

+0

@Dzik:所有的身体都会影响它。据我所知,鼠标关节只是一个b2DistanceJoint--所以我只想尝试玩参数,但我认为它会足够强大。为了避免与静态物体碰撞,您可以使用接触式过滤(b2Filter) – Andrew 2013-02-18 16:55:24