在运行时/步骤中创建? Libgdx box2d

时间:2014-10-12 23:47:36

标签: java android libgdx box2d

我正在使用Eclipse中的libgdx box2d库开发Android游戏。但我遇到了问题。我想在移动的球接触到静态物体(多边形形状框)时放下一个静态物体,该方法在ContactListener.beginContact()中调用。

我尝试创建一个具有相同属性的新主体,但是主体类型已更改为dynamicbody。但是如果我这样做,每次球接触到静止的身体时我都会NullPointerException。在尝试使用NullPointerException对运动学家时也获得setLinearVelocity(0)

我该如何实现?

1 个答案:

答案 0 :(得分:4)

您无法在World.step中创建新实体。那时世界已被锁定。

ContactListener回调位于world.step中。因此,如果要创建新主体,请设置如下标记:

boolean createnewbody = false;

在碰撞回调中:

createnewbody = true;

在你的渲染方法中:

if(createnewbody){

    //create the new body code here

    createnewbody = false;
}