我正在 Eclipse 中使用 libgdx box2d 库开发一款 Android 游戏。但是我遇到了一个问题。我想在移动的球接触静态物体(多边形框)时放下静态物体,该方法在 ContactListener.beginContact()
中调用。
我尝试创建一个具有相同属性的新主体,但主体类型更改为动态主体。但如果我这样做,每次球接触静态物体时我都会得到 NullPointerException
。尝试在运动体上 setLinearVelocity(0)
时也会出现 NullPointerException
。
我该如何实现?
最佳答案
您不能在 World.step 中创建新的主体。那时世界就被锁定了。
ContactListener 回调在 world.step 中。所以如果你想创建一个新的 body ,设置一个像这样的标志:
boolean createnewbody = false;
在你的碰撞回调中:
createnewbody = true;
在你的渲染方法中:
if(createnewbody){
//create the new body code here
createnewbody = false;
}
关于java - 在运行时/步骤期间创建主体? Libgdx box2d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26331179/