Új hozzászólás Aktív témák

  • trisztan94

    őstag

    Van egy sprite-om ami 300px széles, és ki kellene tölteni egy 800px széles window-t. Hogy lehet ezt a legkönnyebben megoldani?

    Én így oldottam meg, de szerintem ez így baromi teljesítmény zabáló (folyton változtatgatni a sprite helyzetét..)

    Render() metódus [libgdx]: (A create() metódusban van megadva az alap pozíciója, ami 0,-5)

    batch.begin();
    grassSprite1.draw(batch);
    grassSprite2.draw(batch);
    grassSprite3.draw(batch);
    grassSprite1.setPosition(280, -5);
    grassSprite2.setPosition(280, -5);
    grassSprite3.setPosition(280, -5);
    grassSprite1.draw(batch);
    grassSprite2.draw(batch);
    grassSprite3.draw(batch);
    grassSprite1.setPosition(570, -5);
    grassSprite2.setPosition(570, -5);
    grassSprite3.setPosition(570, -5);
    grassSprite1.draw(batch);
    grassSprite2.draw(batch);
    grassSprite3.draw(batch);
    grassSprite1.setPosition(0, -5);
    grassSprite2.setPosition(0, -5);
    grassSprite3.setPosition(0, -5);
    batch.end();

    Azért van 3 grassSprite, mert három különböző "layer"-en vannak. Innen csórtam.

    Szerk: ha széthúzom a sprite-okat 800px szélesre akkor sajna nagyon romlik a minőségük, ezért kell ez a "duplikálás" (mi erre a helyes magyar szó? :DDD)

    Más (hunfatal) :

    Úgy oldottam meg végül az ütközés utáni body törlést, hogy létre hoztam egy array-t (deleteBodies), oda hozzáadtam a contactlistenerben a body-t amit törölni kell (A fixture-ökből szedtem ki a getBody() fgv-el), majd a render metódus elején (tehát a contactlisteneren kívül) töröltem. Így nincs külön osztályban, de működik.

    Mit gondol(tok)sz? jó lesz így?

    kaud:
    ContactListenerben:

    dropDeletionList.add(fixtureA.getBody());

    A render metódus elején:

    if(dropDeletionList.size > 0){
    Iterator<Body> iter2 = dropDeletionList.iterator();
    Iterator<Body> iter = raindrops.iterator();
    while (iter2.hasNext()){
    Body dropToDel = iter2.next();
    while(iter.hasNext()){
    Body drop = iter.next();
    if(drop.equals(dropToDel)){
    iter.remove();
    world.destroyBody(dropToDel);
    }
    }

    }
    dropDeletionList.clear();
    }

    A raindrops array iterátora azért kell, hogy ne csak a body-t törölje ki, hanem a hozzá tartozó textúrát is.

Új hozzászólás Aktív témák