0

タッチドラッグが発生すると、新しい位置に描画される円のテクスチャがあります。本体として設定されていません。

Aurelien Ribon の Physics Body Editor Loader GUI を使用して、円の上部と下部に物理マップを作成しました。そのマスクをテクスチャの位置と、ドラッグが発生したときの新しい位置に描画したいと思います。

これどうやってするの?create メソッドで変数を初期化すると、マスクはテクスチャの初期位置に描画されますが、マスクを移動すると、マスクは円の初期位置にとどまります。

これが私のコードです:

Create()方法:

 //... rest of the method ommited for clarity

    karika = gameWorld.getKarika();

    World world = new World(new Vector2(0, 0), false);


Box2DDebugRenderer renderer = new Box2DDebugRenderer();
    BodyEditorLoader karikaLoader = new BodyEditorLoader(Gdx.files.internal("data/collision-masks/karika.json"));

    BodyDef karikaDef = new BodyDef();
    karikaDef.type = BodyType.DynamicBody;
    karikaDef.position.set(karika.getPosition().x, karika.getPosition().y);
    karikaDef.angle = karika.getRotation();

    Body karikaBody = world.createBody(karikaDef);

    FixtureDef karikaFixture = new FixtureDef();
    karikaFixture.density = 0.5f;
    karikaFixture.friction = 0.8f;
    karikaFixture.restitution = 0.6f;

    karikaLoader.attachFixture(karikaBody, "karika", karikaFixture, karika.getWidth());
    Vector2 karikaBodyOrigin = karikaLoader.getOrigin("karika", karika.getWidth()).cpy();

    //rest of the method ommited for clarity

私のrender()方法:

 //...
    batch.begin();
    batch.draw(karikaTexture, karika.getPosition().x, karika.getPosition().y, karika.getWidth() / 2, karika.getHeight() / 2, karika.getWidth(), karika.getHeight(), 1, 1, karika.getRotation(), 0, 0, karikaTexture.getWidth(), karikaTexture.getHeight(), false, false);
    batch.end();
renderer.render(world, cam.combined);
    world.step(1 / 60f, 6, 2);
    //...

render メソッドで描画されているテクスチャは、私の円のテクスチャです。前に言ったように、私はそれをボディとして設定せず、コリジョン マスクのみを設定しました。

私がやりたいのは、マスクをテクスチャにアタッチし、その位置に追いつくことです。たとえば、円をドラッグすると、マスクは円にとどまるはずです

4

1 に答える 1