1

私はLibGdxでゲームを開発しています。ゲームで scene2d アクターを使用しています。私はこの体で2本の矢を持っています

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());
}

本体の写真

ここに画像の説明を入力

しかし、ある矢印を別の矢印の上にドロップすると、衝突するのではなく重なります。ボディエディタの説明から、基準点である赤いマークがあることがわかりました。

矢印を衝突させるにはどうすればよいですか?

4

1 に答える 1

4

答えを見つけた

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

ここで、90 は矢印の幅です。

于 2013-07-10T10:12:50.720 に答える