我希望精灵附加一个多边形形状体。当我运行代码时,sprite和body都会显示,但它们没有相互链接。我查看了所有堆栈溢出问题,但没有任何帮助。 我在一个类中创建它,我从主类实例化它。 这是我的代码,
public SpriteButtons(PlayScreen screen) {
this.world = screen.getWorld();
batch = new SpriteBatch();
region = new TextureRegion(screen.getAtlas().findRegion("fireball"), 0, 0, 16, 16);
sprite = new Sprite(region);
this.gamecame = new OrthographicCamera();
BodyDef bodyDef = new BodyDef();
bodyDef.type = BodyDef.BodyType.StaticBody;
bodyDef.position.set(0, 0);
body = world.createBody(bodyDef);
PolygonShape shape = new PolygonShape();
shape.setAsBox(0.2f, 0.2f);
FixtureDef fixtureDef = new FixtureDef();
fixtureDef.shape = shape;
fixtureDef.density = 1f;
sprite.setSize(25, 25);
Fixture fixture = body.createFixture(fixtureDef);
}
public OrthographicCamera getGamecame() {
return gamecame;
}
public void render(float dt) {
sprite.setPosition(body.getPosition().x - sprite.getWidth()/2f,
body.getPosition().y - sprite.getHeight()/2f );
Gdx.app.log("" + body.getPosition().x, "");
batch.begin();
sprite.draw(batch);
setRegion(region);
batch.end();
}
我的输出如下,
badlogic sprite没有附加多边形体,我从主类实例化这个类,我将从主类render方法调用这个类render方法。对不起,如果问题似乎很愚蠢。我不知道我在哪里错过了这个。请帮忙..!!在此先感谢.. !!
答案 0 :(得分:0)
你必须根据render
方法中的身体位置更新精灵的位置 - 如果你没有这样做,精灵怎么知道它附着在身体上?
请注意,当libgdx'es精灵的起源位于它左下角时,box2d身体的原点位于身体的中心。然后你需要减去身体位置的一半宽度和高度。
所以这就是你要做的事情:
//render()
sprite.setPosition(body.getPosition().x - sprite.getWidth()/2f,
body.getPosition().y - sprite.getHeight()/2f );
...
sprite.draw(batch);
...
答案 1 :(得分:0)
尝试这样做
batch.draw(sprite, sprite.getX(), sprite.getY());
并在上面改变身体的初始位置,使其下降,你可以通过初始化世界来检查world = new World(new Vector2(0, -98f), true);