2013-07-08 3 views
1

Я разрабатываю игру с LibGdx. Я использую актеров scene2d в своей игре. У меня есть 2 стрелы с этим теломLibGdx Физический редактор тела

private void creatBody() { 
    BodyDef bd = new BodyDef(); 
    bd.position.set(getX(), getY()); 
    bd.type = BodyType.DynamicBody; 
    FixtureDef fd = new FixtureDef(); 
    fd.density = 15f; 
    fd.friction = 0.6f; 
    fd.restitution = 0.02f; 
    if (body != null) 
     removeBodySafely(body); 
    body = world.createBody(bd); 
    body.setTransform(body.getWorldCenter(), MathUtils.degreesToRadians 
      * getRotation()); 
    GameScreen.shapeLoader.attachFixture(body, type, fd, 1); 
} 

public void draw(SpriteBatch batch, float parentAlpha) { 
    setRotation(MathUtils.radiansToDegrees * body.getAngle()); 
    setPosition(body.getPosition().x, body.getPosition().y); 

    TextureRegion keyFrame = GameScreen.getAtlas("arrows").findRegion(type); 
     batch.draw(keyFrame, getX(), getY(), 0, 0, getWidth(), getHeight(), 
       1, 1, getRotation()); 
} 

Изображение тела

enter image description here

, но, когда я бросаю одну стрелку над другой они перекрывают друг друга, а не сталкиваясь. Из описания редактора body я обнаружил, что есть красная метка, которая является контрольной точкой.

Как заставить стрелки сталкиваться?

+0

это мой первый вопрос в SO –

ответ

4

Я нашел ответ

GameScreen.shapeLoader.attachFixture(body, type, fd, 90); 

где 90 ширина стрелки.

Смежные вопросы