0

我使用 libgdx 和 box2d 制作游戏。我有动态的身体和静态的。当动态物体与静态物体碰撞时,动态物体应该回到起点(向量(0, 0))。我的联系方式:

public void beginContact(Contact contact) {
    body = contact.getFixtureA().getBody();
    bodyBanana = contact.getFixtureB().getBody();
    body.getUserData();
     if(body.equals(bodyBanana) )
        {
            body.setLinearVelocity(new Vector2(0 , 0));
        }
}

我在我的 render() 方法中调用它:

this.beginContact(contact);

但我有 NullPointerException 在线:

if(body.equals(bodyBanana) 

我不知道发生了什么?感谢帮助。

4

1 回答 1

1

是的,你不应该自己打电话给联系人。很高兴注意到我上次在联系人中使用 boxd2 时也得到了 NPE,并且代码与我之前使用的代码完全相同。可能是更新带来了这种行为。对我来说,这就像忽略那个特定的联系人一样简单

bodyBanana = contact.getFixtureB().getBody();
if(body==null || bodybanana==null) return; //add this
body.getUserData();

笔记。和你一样,我不是唯一一个现在获得无效联系人的人。

于 2013-09-23T20:08:50.380 回答