簡體   English   中英

Libgdx-Box2D:將Physics Body Editor加載器蒙版附加到動態紋理

[英]Libgdx - Box2D: Attach Physics Body Editor Loader mask to dynamic texture

我有一個圓形的紋理,當發生觸摸拖動時,該紋理將被繪制到新的位置。 它沒有設置為主體。

我已經使用Aurelien Ribon的“ Physics Body Editor”加載程序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方法中繪制的紋理是我圈子的紋理。 如前所述,我還沒有將其設置為主體,只是防撞面具。

我想做的是蒙版附加到紋理上,並保持其位置不變,例如當我拖動圓時,蒙版應保留圓上。

查看DebugRenderer 它工作得很好,並且恰好滿足您的要求。

這是使用方法。

debugRenderer.render(this.world, camera.combined);

是更詳盡的教程

我建議您使用物理對象的位置分配圓的位置,而不要嘗試將物理對象分配給紋理的位置。

在您的代碼中,好像您使用karikaBody的當前位置創建了karika ,但是karikaBody永遠不會更新karikaBody位置。 因此,您的“碰撞面罩”(您的物理身體)的位置永遠不會改變。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM