我正在使用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
}
};
答案 0 :(得分:2)
在preSolve(Contact contact, Manifold manifold)
方法中,您可以查询已碰撞的两个物体的速度。使用contact.getFixtureA()
和contact.getFixtureB()
,您可以获取每个fixture的实体,并使用body.getLinearVelocity()。
在box2D实际解决碰撞之前调用preSolve
方法,因此在碰撞瞬间,仍然可以访问碰撞速度。
正如手册所述:"预解决事件也是确定碰撞点状态和逼近速度的好地方"
您可以使用preSolve
中提供的信息,例如身体的重量以及它们移动的速度,以决定它会如何影响您的物体。