Kolízia - java

Programovacie jazyky, rady, poradňa...
Stephanides
Amateur
Amateur
Príspevky: 13
Registrovaný: 14 okt 2012, 8:18

Kolízia - java

Príspevok od používateľa Stephanides »

Zdravím vytváram hru lego jednoduchú, zatial mam nejakú základnu dosku a rozhadzané kocky na nej ktoré si môže hrač skladať, chcel by som ale hlavne implementovať, že pri styku s druhou kockou ju dalej nepustí vlastne ako keby vyplniť tie kocky aby jedna cez druhú nemohla prejsť, zatial som vyriešil iba že nemôžu vojsť pod základnú dosku ale to som dla iba jednu smiešnu podmienku že nemôžu ísť pod ypsylonovú súradnicu.
Vedel by mi niekto poradiť ako vyriešiť kolíziu pri styku dvoch kociek?
kocky sa mi vytvárajú do array list takže je to ako keby jeden predmet ktorý sa zapisuje do arraylistu , jednoduche by to bolo ak by som mal panačika ktorý nemôže prejsť cez stenu lebo su to dva objekty ale pre jeden objekt ktorý sa ukladá do array to neviem
vedel by mi niekto helfnuť? je to v jave presnejšie pracujem v JMonkeyEngine 3
Poskytnem aj projekt ak by sa niekto chcel pozrieť ako to mam riešené
Vdakaaa vopred
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Kolízia - java

Príspevok od používateľa BX »

Ak nie je scéna nejak extra zložitá, stači kontrolovať kolízie s každou kockou - predpokladám, že môžeš vždy ťahať s jednou. A pri kolízií sa len prestaneš hýbať (to už záleží na implementácií pohybu)
Kolízia dvoch obdĺžnikov/kvádrov je jednoduchá (neviem, či je to 2D, alebo 3D)
Stephanides
Amateur
Amateur
Príspevky: 13
Registrovaný: 14 okt 2012, 8:18

Re: Kolízia - java

Príspevok od používateľa Stephanides »

Hej no predstav si že mam v prostredí rozhadzane kocky a hýbem s prvou, stlačím ,,c,, tak mi prepne dalšiu alebo poprípade ,,x,, ak chcem posunúť predošlu.. prestanem sa hýbať ale čo ak sa chcem vratiť s tou kockou? mocnerozumiem, je to 3D
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Kolízia - java

Príspevok od používateľa BX »

Ak to chceš spraviť nejak poriadne a relatívne jednoducho, určite má ten monkeyengine nejaký fyzikálny model. Tam si zadefinuješ všetky kocky ako kolízne objekty a ono ti to vyrieši samo.

Ak to chceš robiť manuálne, tak to samozrejme nebude také skvelé (urobiť fyzikálne korektné kolízie v 3D scéne je dosť zložitá veda)
Môžeš si zadefinovať premenné pre každý pohyb (niečo ako block_left_move, block_right_move atď) a keď narazíš na kocku sprava, nastavíš príslušnú premennú. Ak je nastavená, pohyb to zakáže. Akonáhle kolíziu nezdetekuješ, zase príslušnú premennú zresetuješ (kolízie počítaš v každom frame pre každý pohyb)
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8223
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Kolízia - java

Príspevok od používateľa harrison314 »

Tu su spominane algoritmy na detekciu kolizii https://dip.felk.cvut.cz/browse/pdfcach ... 07bach.pdf
A tu je to trochu vysvetlene http://nehe.ceske-hry.cz/tut_30.php
Ale ak mozes pouzi detekciu kolizii cez monkeyengine.
Stephanides
Amateur
Amateur
Príspevky: 13
Registrovaný: 14 okt 2012, 8:18

Re: Kolízia - java

Príspevok od používateľa Stephanides »

A ako použijem tu detekciu v monkeyengine? toto neviem :)
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8223
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Kolízia - java

Príspevok od používateľa harrison314 »

Stephanides
Amateur
Amateur
Príspevky: 13
Registrovaný: 14 okt 2012, 8:18

Re: Kolízia - java

Príspevok od používateľa Stephanides »

Hej harrison ten som skúšal vlastne väčšinu robím vdaka tutorialom na ich stranke len tam riešia koliziu medzi akterom a nejakým objektom, dalo by sa to aj v mojom ale to by som musel potom vytvoriť 200 ovládaní pre 200 kociek čo sa neda.. ja ich mam v array liste a to podla toho nevyriešim čo oni tam majú preto som sa opýtal sem
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Kolízia - java

Príspevok od používateľa BX »

Sme sa tu teda stretli nejavisti :D
No tak ale kým nepríde niekto, kto to ovláda, skús sa pozrieť na toto http://jmonkeyengine.org/wiki/doku.php/ ... ed:physics
Ako som so rýchlo prebehol očami, teba zaujíma RigidBodyControl, ktoré potom priradíš každej kocke. A možno tam budú ešte nejaké veci okolo.
Každopádne rigid body je objekt tvojho záujmu :) (tj. kolizný objekt, ktorý nemení tvar)
Stephanides
Amateur
Amateur
Príspevky: 13
Registrovaný: 14 okt 2012, 8:18

Re: Kolízia - java

Príspevok od používateľa Stephanides »

Fuu tvoja odpoved sa mi páči :) takže ako keby zhmotní moje kocky? budu sa detekovať aj medzi sebou že su kolízne objekty hej ? :)
skúsim to zajtra dnes už sa mi nechce ale dobre že si napísal lebo som to hladal medzi tutorialmi na tej stranke pri colission ale v phyciscd som nepozeral.. ak by mi niečo nebolo stým jasné tak to tu zajtra napíšem :) budem rád ak zareaguješ heh :) a ešte viac budem rád ked to doriešim :D
Thanks

//autoeditácia príspevku (15 Dec 2012, 11:18)
brick_phy = new RigidBodyControl(2f);
Podľa čoho dávam to 2f?
pcsiete
Medium Star
Medium Star
Príspevky: 413
Registrovaný: 07 dec 2012, 18:47

Re: Kolízia - java

Príspevok od používateľa pcsiete »

Ak to nie je nula: vytvorí sa HullCollisionShape. Inak MeshCollisionShape.
Stephanides
Amateur
Amateur
Príspevky: 13
Registrovaný: 14 okt 2012, 8:18

Re: Kolízia - java

Príspevok od používateľa Stephanides »

Neviem to podľa toho návodu pridať pre môj model :(
sú to tri riadky a ani tie neviem pridať tak aby to fungovalo, ak by som niekomu poslal projekt nepozrel by sa na to ? :(
pcsiete
Medium Star
Medium Star
Príspevky: 413
Registrovaný: 07 dec 2012, 18:47

Re: Kolízia - java

Príspevok od používateľa pcsiete »

Máš to tam krásne rozpísané. Čítaj si to riadok za riadkom. Prípadne ak ti to stále nepôjde, daj si to vysvetliť na ich oficiálnom fóre.
Stephanides
Amateur
Amateur
Príspevky: 13
Registrovaný: 14 okt 2012, 8:18

Re: Kolízia - java

Príspevok od používateľa Stephanides »

hej ale tam majú geometry box a ja mam Spatial nahratý model .. stým neviem spraviť zmenu
Napísať odpoveď