Box2D联系人监听器,过滤器和关节的快速问题

时间:2011-07-29 14:49:42

标签: java listener box2d contact

我对Box2D比较陌生,我有几个简单的问题,任何使用Box2D的人都应该能够相对容易地回答。

  1. 在我的beginContact回调方法中,我正在创建一个新的Joint并将其添加到我的世界。但是,当我这样做时,我得到一个运行时错误。这是因为在这些回调方法中不允许创建和添加新对象吗?

  2. 当一个人正在创建一个关节时,是否有一个特定的位置,其中锚点必须是为了避免运行时错误?目前,我正在平均所有接触点的坐标并将其用作我的锚点,因为我希望物体在它们碰撞的位置焊接在一起。我是在正确的轨道上吗?思考?评论

1 个答案:

答案 0 :(得分:2)

您无法在beginContact方法中创建关节,因为世界处于模拟状态。您必须在某个数组或任何其他结构中保留您想要执行的所有操作(例如创建关节),并在完成Step的{​​{1}}方法后执行与世界相关的操作。

如果您需要大量焊接接头,在制作复杂结构时会遇到问题。模拟效果不佳。最好在其中一个碰撞体上创建夹具并移除另一个。