【发布时间】:2023-03-10 19:15:01
【问题描述】:
int amoumt = 10;
int i = 1;
while (i < amoumt+1)
{
box(1);//body
i++;
}
如果我使用这种方法,我会得到 9 个带有精灵的身体和一个没有精灵的身体。 但是我想要所有的精灵
在渲染方法中,用于在每个主体上绘制一个精灵:
batch.begin();
world.getBodies(worldBodies);
for (Body body : worldBodies) {
if (body.getUserData() instanceof Sprite) {
Sprite sprite = (Sprite) body.getUserData();
Vector2 position = body.getPosition();
sprite.setPosition(position.x - sprite.getWidth() / 2,position.y - sprite.getHeight() / 2);
sprite.setRotation(body.getAngle() * MathUtils.radiansToDegrees);
sprite.draw(batch);
}
}
batch.end();
}
正文:
private Body box(float a)
{
BodyDef bodyDef = new BodyDef();
bodyDef.position.set(0,0);
bodyDef.type = BodyType.DynamicBody;
PolygonShape polygonShape=new PolygonShape();
polygonShape.setAsBox(a,a);
FixtureDef fixtureDef = new FixtureDef();
fixtureDef.shape=polygonShape;
fixtureDef.density=2;
fixtureDef.restitution=0.5f;
fixtureDef.friction=0.5f;
Body box=world.createBody(bodyDef);
box.createFixture(fixtureDef);
box.setUserData(sprite);
sprite = new Sprite(new Texture("android.jpg"));
sprite.setSize(a*2,a*2);
sprite.setOrigin(sprite.getWidth() / 2, sprite.getHeight() / 2);
worldBodies = new Array<Body>();
return box;
}
【问题讨论】:
-
请提供更多源代码以帮助解释您的 box() 方法的作用。如果这是您创建“身体”的地方,那很可能是您的问题所在。另外,你用的是 Box2D 吗?
-
@Samich 我用更多信息编辑了帖子
标签: android libgdx sprite box2d