java - 在运行时/步骤期间创建主体? Libgdx box2d

标签 java android libgdx box2d

我正在 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/

相关文章:

java - 带菱形运算符的通配符

java - repaint() 方法不绘制新帧

android - 造成原因:org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration $ ArtifactResolveException:

java - 在 Libgdx 中基于触摸输入使用力移动主体

java - 从起始坐标、角度和距离获取点

android - Libgdx 根据 DPI 选择正确的纹理?

java - 这是java内存泄漏吗

java - Vaadin 项目无法启动

Android API 请求队列

android - 如何使用proguard牙签规则?