Új hozzászólás Aktív témák
-
trisztan94
őstag
válasz
trisztan94
#1083
üzenetére
Szerk: (#1084) hunfatal: Köszönöm, megnézem majd

Még egy dolgot kérdeznék

A collision detection eddig így volt megoldva:
Iterator < Body > iter = raindrops.iterator();
while (iter.hasNext()) {
Body raindrop = iter.next();
if (raindrop.y + 64 < 0) {
dropped++;
iter.remove();
}
if (raindrop.overlaps(bucket)) {
dropSound.play();
catched++;
iter.remove();
}
}Amikor összeér a vödör és a csepp, akkor nagyon szépen eltűnt a csepp és lejátszotta a hangot.
Ez amúgy a libgdx "Simple app" tutorialján alapszik, csak átalakítanám box2d-re (gravitáció, "szél" [x tengelyen gravitáció], box2dlight, stbstb miatt)Tehát beraktam ez helyett a box2d-s collision detection-t. így:
Iterator < Body > iter = raindrops.iterator();
while (iter.hasNext()) {
Body raindrop = iter.next();
world.setContactListener(new ContactListener() {
@Override
public void beginContact(Contact contact) {
Fixture fixtureA = contact.getFixtureA();
Fixture fixtureB = contact.getFixtureB();
if ((String) fixtureA.getBody().getUserData() == "bucket" && (String) fixtureB.getBody().getUserData() == "drop" || (String) fixtureA.getBody().getUserData() == "drop" && (String) fixtureB.getBody().getUserData() == "bucket") {
//csepp és vödör ütközik
dropSound.play();
catched++;
iter.remove();
}
if ((String) fixtureA.getBody().getUserData() == "ground" && (String) fixtureB.getBody().getUserData() == "drop" || (String) fixtureA.getBody().getUserData() == "drop" && (String) fixtureB.getBody().getUserData() == "ground") {
//csepp és föld ütközik
dropped++;
iter.remove();
}
}
@Override
public void endContact(Contact contact) {}
@Override
public void preSolve(Contact contact, Manifold oldManifold) {
// TODO Auto-generated method stub
}
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
// TODO Auto-generated method stub
}
});
}Viszont az iter.remove()-ra ezt a hibát dobja:
"Cannot refer to a non-final variable iter inside an inner class defined in a different method"
Ráraktam az iterátorra a "final" modifikációt, akkor nem hibázik, de amikor valami ütközik (csepp - talaj, csepp - vödör), akkor nem az tűnik el amelyik ütközött, hanem egy tök random.
Értitek, hogy mit magyarázok?
Tudok készíteni egy videót a dologról, ha kell.Köszönöm szépen előre is a segítséget!

Új hozzászólás Aktív témák
- Vezetékes FEJhallgatók
- Egyéni arckép OFF
- PlayStation 5
- Linux Mint
- Nyíregyháza és környéke adok-veszek-beszélgetek
- Tőzsde és gazdaság
- Külső 3,5'' mobil rack-ek topikja
- Xbox Series X|S
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- További aktív témák...
- Precision 3571 27% 15.6" FHD IPS i7-12800H RTX A1000 32GB 512GB NVMe magyar vbill gar
- Dell és HP szerver HDD caddy keretek, adapterek. Több száz darab készleten, szállítás akár másnapra
- BESZÁMÍTÁS! Nintendo Switch OLED 64GB játékkonzol garanciával hibátlan működéssel
- Gamer PC i5-8400 RTX3060 12GB 16GB RAM Windows 11 Pro
- Samsung Galaxy Tab S9 FE 256GB, Wi-Fi, 1 Év Garanciával
- GIGABYTE A520M DS3H AC vadiúj, 3 év névre szóló garancia, WiFi
- 202 - Lenovo Yoga Pro 9 (16IAH10) - Intel Core U7 255H, RTX 5060 (FOGLALVA)
- Xiaomi Mi Watch S1 Pro okosóra
- HIBÁTLAN iPhone 15 128GB Yellow -1 ÉV GARANCIA - Kártyafüggetlen, MS4489, 100% Akkumulátor
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5700X 16/32/64GB RAM RX 9060 XT 8GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs

Tudok készíteni egy videót a dologról, ha kell.

