Box2D Contact Listener,LibGDX

时间:2014-12-06 17:36:24

标签: libgdx box2d

我正在使用LibGDX和Box2D开发游戏。我希望在两个物体碰撞时得到力或冲动,但是我找不到正确的方法,我怎么能用接触式侦听器来获得那种冲动或力?我无法在postSolve方法中使用ContactImpulse参数获得冲动。谁能帮帮我?

     new ContactListener() {

    @Override
    public void preSolve(Contact contact, Manifold oldManifold) {
        // TODO Auto-generated method stub

    }

    @Override
    public void postSolve(Contact contact, ContactImpulse impulse) {
        // TODO Auto-generated method stub

    }

    @Override
    public void endContact(Contact contact) {
        // TODO Auto-generated method stub

    }

    @Override
    public void beginContact(Contact contact) {
        // TODO Auto-generated method stub

    }
};

1 个答案:

答案 0 :(得分:2)

preSolve(Contact contact, Manifold manifold)方法中,您可以查询已碰撞的两个物体的速度。使用contact.getFixtureA()contact.getFixtureB(),您可以获取每个fixture的实体,并使用body.getLinearVelocity()。

在box2D实际解决碰撞之前调用preSolve方法,因此在碰撞瞬间,仍然可以访问碰撞速度。

正如手册所述:"预解决事件也是确定碰撞点状态和逼近速度的好地方"

您可以使用preSolve中提供的信息,例如身体的重量以及它们移动的速度,以决定它会如何影响您的物体。