Hirdetés
- MWC 2026: Bajnoki címre pályázik a Xiaomi Watch 5
- Akciófigyelő: Jelentős kedvezményekkel veheted meg a Xiaomi 17-eket
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Szívós, szép és kitartó az új OnePlus óra
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- One mobilszolgáltatások
- Sokkal jobb ajánlat lett elődjénél az iPhone 17e
- Samsung Galaxy A54 - türelemjáték
- MWC 2026: Vitrinben itt a Nothing Phone (4a)
- MWC 2026: Kezünkben a minden tekintetben európai okostelefon
Ú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!

-
fatal`
titán
válasz
trisztan94
#1083
üzenetére
Nézz körül az andengine fórumon, a box2d ugyanaz.
Ne fixturet hasonlíts, hanem bodyt (fixture.getBody()) és/vagy userDatat.
Új hozzászólás Aktív témák
- Milyen egeret válasszak?
- Gitáros topic
- MWC 2026: Bajnoki címre pályázik a Xiaomi Watch 5
- Akciófigyelő: Jelentős kedvezményekkel veheted meg a Xiaomi 17-eket
- Kerékpárosok, bringások ide!
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Energiaital topic
- Luck Dragon: Asszociációs játék. :)
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- E-roller topik
- További aktív témák...
- L13 Yoga Gen3 13.3" FHD+ IPS érintői5-1245U 16GB 256GB NVMe ujjlolv IR kam aktív toll gar
- Playstation 5 pro és PSVR 2 szett, kontoller töltő állmos minden kontollerhez
- MINDENFÉLE Laptop jó áron nézz körül! 60+ hirdetés Üzleti,Gamer, Multimédiás,Tervező
- Apple iPhone 15 Pro / 128GB / Kártyafüggetlen / 12Hó Garancia / Akku: 86%
- Samsung Galaxy A56 5G / 8/256GB / Kártyafüggetlen / 12Hó Garancia / Akku:100%
- LG UltraFine 4K - 6K és Smart Monitorok -30%
- Dobozos Új HP OmniBook 5 Flip 2-in-1 érintőkijelzős laptop i5-1334U 16gb ram 512ssd Garancia
- Xiaomi 13T Pro 512GB, Kártyafüggetlen, 1 Év Garanciával
- HP ProBook 445 G8 14" Ryzen 3 5400U, 8GB RAM, 256GB SSD, jó akku, számla, 6 hó gar
- Keresünk iPhone 16/16e/16 Plus/16 Pro/16 Pro Max
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

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

