2012-11-20 56 views
0

我有一个联系监听两个动态机构和允许调用机构A和B.Box2D的对象 - 修改动态碰撞

当体(A.tag ==汽车)用身体碰撞(B.tag = =猫)我不希望车被推回去,我想要推动猫但不推回车上(导致汽车停下来!)

我觉得我错过了一些东西简单,但有人可以请解释我如何操纵b2Contact,以便一个对象不会改变速度,但另一个呢?

谢谢!

+0

http://stackoverflow.com/questions/11061598/how-to-restore-b2body-state-after-collision http://stackoverflow.com/questions/11062252/how-to-detect-collision-but-拒收碰撞功能于Box2D的 – iforce2d

回答

0

您可以使用PreSolve和PostSolve回调。 在PreSolve中,将汽车速度,角速度,角度和位置保存在某处 - 例如,作为汽车的用户数据对象上的实例变量。在PostSolve中恢复这些值。

PreSolve就在这些物体碰撞之前调用,PostSolve在碰撞之后立即被调用 - 速度发生变化时。不要自己尝试,但应该工作。