Hirdetés
- Szendvics a csúcson: teszten a különleges ROG Swift PG27AQWP monitor
- Mi a különbség a szerver és a PC között?
- A cégvezetők látják az AI költségeit, csak azt nem hogyan lesz ebből haszon
- Utcakép banánnal: félrecsúszhat a Google Térkép fókusza
- ARM-os meglepetéskiadást kap az év első felében a Windows 11
- Milyen belső merevlemezt vegyek?
- Bluetooth hangszórók
- OLED monitor topic
- A cégvezetők látják az AI költségeit, csak azt nem hogyan lesz ebből haszon
- Akciókamerák
- Milyen billentyűzetet vegyek?
- AMD Navi Radeon™ RX 9xxx sorozat
- Intel Core Ultra 3, Core Ultra 5, Ultra 7, Ultra 9 "Arrow Lake" LGA 1851
- TCL LCD és LED TV-k
- Hogy is néznek ki a gépeink?
Ú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
- HP EliteBook X360 830 G10 2in1 360 fokban kihajtható tablet mód is! i5 1335U 16Gb 512GB
- ASUS VivoBook 16X Gamer Tervező Laptop 16" -30% Bivaly i7-12650H 10Mag 16/1TB RTX 4050 6GB FHD+
- Asztali PC eladó
- Új Dell G15 Gamer FHD IPS 165Hz i7-13650HX 14mag 16GB 512GB Nvidia RTX 4050 6GB 140W Win11 Garancia
- Laptop ramok DDR5 8Gb 4800Mhz SK Hynix / Samsung, akár nagy tételben is, mennyiségi kedvezmény van!
- MacBook Air 15" (M3, 8 GB RAM, 512 GB SSD)
- ÁRGARANCIA!Épített KomPhone Ryzen 5 4500 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- LIDL akkumulátor és generátor teszter
- BESZÁMÍTÁS! Sony PlayStation 5 825GB SSD lemezes konzol fejhallgatóval garanciával hibátlan működés
- Beszámítás! Sony PlayStation 5 825GB digital garanciával hibátlan működéssel
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

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

