Libgdx - многоугольник box2d не соответствует спрайту

У меня есть тело с многоугольником, созданное с помощью .setasbox, но когда я запускаю игру, поле немного больше моего спрайта. Я знаю, что setasbox использует половину высоты и половину ширины, я использовал свою константу масштабирования для преобразования метров в пиксели, и я знаю, что спрайт также имеет начало оси в левом нижнем углу. Несмотря на это, у меня все еще есть коробка шириной немного больше, чем спрайт, и этот зазор такой же, однако я меняю размер коробки...

Это код, который я использую для создания своей коробки (160 — это константа для масштабирования метров в пиксели):

 public Block(World w, float halfWidth, float halfHeight, Vector2 position, Texture tex){
    world = w;

    bodyd = new BodyDef();
    bodyd.type = BodyDef.BodyType.KinematicBody;
    bodyd.gravityScale = 0;
    shape = new PolygonShape();
    shape.setAsBox(halfWidth, halfHeight);
    fixtured = new FixtureDef();
    fixtured.shape = shape;
    fixtured.density = DENS;
    fixtured.friction = FRIC;
    fixtured.restitution = REST;


    bodyd.position.set(new Vector2(position.x, position.y));
    body = world.createBody(bodyd);
    fixture = body.createFixture(fixtured);
    body.setUserData(this);


    texture = tex;
    sprite = new Sprite(texture);
    sprite.setSize(halfWidth * 2 * 160, halfHeight*2*160);
    sprite.setPosition((body.getPosition().x - halfWidth) * 160, (body.getPosition().y - halfHeight) * 160);
}

person Giuseppe Trapasso    schedule 19.09.2015    source источник
comment
пожалуйста, прикрепите скриншот и код создания коробки - каковы размеры вашего спрайта?   -  person m.antkowicz    schedule 19.09.2015
comment
Я просто прикрепил свой код   -  person Giuseppe Trapasso    schedule 20.09.2015


Ответы (2)


Вы можете попробовать использовать Box2DSprite? это очень просто..

https://bitbucket.org/dermetfan/libgdx-utils/wiki/net.dermetfan.gdx.graphics.g2d.Box2DSprite

http://www.java-gaming.org/index.php?topic=29843.0

person fatboy    schedule 23.10.2015

не вижу ничего плохого в вашем коде

вы считали, что размер, который вы указали для своего спрайта, - это размер полного спрайта, а не размер блока внутри вашего спрайта?

Я думаю, именно поэтому ваш кирпичный спрайт меньше, чем ваш кирпичный физик:

введите здесь описание изображения

если ваш кирпич не имеет полного размера спрайта, возможно, проблема связана с чем-то другим.

надеюсь, что это было полезно!

person Netero    schedule 23.10.2015