Libgdx Box2d处理动态创建的实体
我正在努力学习box2d,但我有个问题。我在我的项目中有3具尸体,实际上有3条线。我试图将每条线的y坐标设置为-7,当它们到达y坐标14时。我检查他们是否超过14岁的代码如下:Libgdx Box2d处理动态创建的实体,libgdx,box2d,Libgdx,Box2d,我正在努力学习box2d,但我有个问题。我在我的项目中有3具尸体,实际上有3条线。我试图将每条线的y坐标设置为-7,当它们到达y坐标14时。我检查他们是否超过14岁的代码如下: for (int i = 0; i < groundsArray.size(); i++) { Body body2 = groundsArray.get(i); float x_deg; x_deg = body2.getTransform().getPosition().x;
for (int i = 0; i < groundsArray.size(); i++) {
Body body2 = groundsArray.get(i);
float x_deg;
x_deg = body2.getTransform().getPosition().x;
if (body2.getUserData().equals("grounds" + i) && body2.getTransform().getPosition().y > 14) {
body2.setTransform(x_deg, -7, 0);
}
}
我如何称呼createGrounds inside show:
for (int i = 0; i <= 2; i++) {
createGrounds(i);
}
如何更新渲染中的世界和位置:
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0, 0);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
accelX = Gdx.input.getAccelerometerX();
Vector2 gravity = new Vector2(-accelX * 6, -60.81f);
world.setGravity(gravity);
world.step(TIMESTEP, VELOCITYITERATIONS, POSITIONITERATIONS);
batch.setProjectionMatrix(camera.combined);
batch.begin();
world.getBodies(tmpBodies);
for (Body body : tmpBodies) {
if (body.getUserData().equals(ballsprite)
&& body.getUserData() instanceof Sprite) {
Sprite sprite = (Sprite) body.getUserData();
sprite.setPosition(
body.getPosition().x - sprite.getWidth() / 2,
body.getPosition().y - sprite.getHeight() / 2);
sprite.setRotation(body.getAngle() * MathUtils.radiansToDegrees);
sprite.draw(batch);
}
float x_deg;
float y_deg;
x_deg = body.getTransform().getPosition().x;
y_deg = body.getTransform().getPosition().y;
y_deg = y_deg + game_speed;
body.setTransform(x_deg, y_deg, 0);
}
// The part i couldn't solve
for (int i = 0; i < groundsArray.size(); i++) {
Body body2 = groundsArray.get(i);
float x_deg;
x_deg = body2.getTransform().getPosition().x;
if (body2.getUserData().equals("grounds" + i)
&& body2.getTransform().getPosition().y > 14) {
body2.setTransform(x_deg, -7, 0);
}
}
batch.end();
debugRenderer.render(world, camera.combined);
}可能会将您的循环更改为此
for(int i = groundsArray.size(); i > 0; i--){}
我一眼就看不出有什么不对。我建议您测试所有3个实体是否都符合进行SETTANSFORM的条件。您可以通过在日志中写入您对if中的变量body 2最感兴趣的值来实现这一点。谢谢您的回复。我试过这个,但得到了同样的结果。所有的线都像以前一样像一个物体。我不知道,但可能我在创建或渲染时做错了什么。正因为如此,我用渲染和创建代码编辑了我的问题。对不起,我是box2d的noob。
for(int i = groundsArray.size(); i > 0; i--){}