我正在使用Eclipse中的libgdx box2d库开发Android游戏。但我遇到了问题。我想在移动的球接触到静态物体(多边形形状框)时放下一个静态物体,该方法在ContactListener.beginContact()
中调用。
我尝试创建一个具有相同属性的新主体,但是主体类型已更改为dynamicbody。但是如果我这样做,每次球接触到静止的身体时我都会NullPointerException
。在尝试使用NullPointerException
对运动学家时也获得setLinearVelocity(0)
。
我该如何实现?
答案 0 :(得分:4)
您无法在World.step中创建新实体。那时世界已被锁定。
ContactListener回调位于world.step中。因此,如果要创建新主体,请设置如下标记:
boolean createnewbody = false;
在碰撞回调中:
createnewbody = true;
在你的渲染方法中:
if(createnewbody){
//create the new body code here
createnewbody = false;
}