Hirdetés
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Xiaomi 15T Pro - a téma nincs lezárva
- Apple iPhone 17 - alap
- One mobilszolgáltatások
- Samsung Galaxy S25 FE - fenséges, felejthető vagy felesleges?
- Milyen okostelefont vegyek?
- Eddigi legjobb DxOMark helyezésével zárta 2025-öt a Vivo
- iPhone topik
- Minden a BlackBerry telefonokról és rendszerről
- Samsung Galaxy S25 - végre van kicsi!
Ú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
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Brogyi: CTEK akkumulátor töltő és másolatai
- Kínai és egyéb olcsó órák topikja
- Ford topik
- LEGO klub
- Suzuki topik
- Vigneau interaktív lokálblogja
- Xiaomi 15T Pro - a téma nincs lezárva
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Sweet.tv - internetes TV
- További aktív témák...
- 48 hangszórós mélynyomó kanapé alá
- NVIDIA TITAN RTX 24GB (dobozos) - nagyon furcsa kishibával
- Sony Playstation 5 Slim Digital 825GB + Sony PlayStation Portal Midnight Black - FOXPOST AZ ÁRBAN!
- Skagen 816xswxc1 Ceramics White női karóra
- Philips Sonicare Diamond Clean HX922W ultrahangos elektromos fogkefe + fogkefék
- GYÖNYÖRŰ iPhone 14 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3972
- Huawei Quidway S5324TP-SI-AC - 24G, 4SFP, L2, managed switch
- Akció! HP ZBook Firefly 14 i7-1165G7 16GB 512GB Nvidia Quadro T500 4GB 14" FHD 1 év garancia
- Xiaomi Redmi Note 14 Pro+ 5G 256GB, Kártyafüggetlen, 1 Év Garanciával
- Telefon szerviz helyben - Gyors javítás, akár 30 perc alatt!
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest

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


