Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Törmäystarkistus

Sivun loppuun

vehkis91 [28.04.2008 14:58:27]

#

Olen miettinyt, että miten voisin tehdä jonkin (neliön) pelaajan ympärille.
Tämän tarkoitus näyttää milloin pelaaja törmää johonkin...


Ei ole Harmainta aavistustakaan miten kys. juttu tehdään.
Grafiikka kirjastona käytän SDL.

hunajavohveli [28.04.2008 15:12:26]

#

Minkä muotoisia ovat muut törmättävät kappaleet ja miten niiden muodot on tallennettu?

vehkis91 [28.04.2008 16:42:43]

#

siis lataan kuvan tiettyyn pisteeseen ja ajattelin, että miten voisin tehdä siihen ympärille jonkin muotoisen "törmäyskentän". Riittää, että kenttä on neliö tai suorakulmio..

hunajavohveli [28.04.2008 16:49:24]

#

Suorakulmioille voidaan erikseen vertailla törmäystä x- ja y-akseleiden suhteen. Suorakulmiot törmäävät x-akselilla, jos yksikin seuraavista ehdoista pätee:

al > bl && al < br
ar > bl && ar < br
al < bl && ar > br

Ja y-akselilla jos yksikin seuraavista ehdoista pätee:

au > bu && au < bd
ad > bu && ad < bd
au < bu && ad > bd

Silloin kun törmäykset tapahtuvat molemmilla akseleilla, suorakulmiot törmäävät oikeasti. Muuttujissa siis a ja b tarkoittavat kahta eri suorakulmiota, l on vasemman reunan x-koordinaatti, r oikean reunan x-koordinaatti, u yläreunan y-koordinaatti ja d alareunan y-koordinaatti. Yhdistämällä nuo tähän tapaan saadaan lopullinen lauseke, joka on tosi suorakulmioiden ollessa päällekäin:

((al > bl && al < br) || (ar > bl && ar < br) || (al < bl && ar > br)) &&
((au > bu && au < bd) || (ad > bu && ad < bd) || (au < bu && ad > bd))

Optimoimisen varaa tietysti on, mutta kääntäjää osannee tehdä sen tässä tapauksessa ihmistä paremmin.

vehkis91 [28.04.2008 16:55:18]

#

Tarkoitin, että miten voin luoda sdl:ää käyttäen suorakulmion..

hunajavohveli [28.04.2008 17:02:01]

#

SDL:llä piirretään suorakulmioita SDL_FillRect()-funktiolla tähän tapaan:

SDL_FillRect(osoitin_surfaceen, osoitin_suorakulmioon, väri);

Toisena parametrina annetaan siis osoitin SDL_Rect-rakenteeseen, joka luodaan näin:

SDL_Rect skulmio;
skulmio.x = ...;
skulmio.y = ...;
skulmio.w = ...;
skulmio.h = ...;

En tosin oikein ymmärtänyt millä tavoin pelkkä kulmion piirtäminen auttaa sinua tekemään törmäystarkistuksen.

vehkis91 [28.04.2008 17:04:02]

#

sijoitan suorakulmion ukon kuvan Ympärille ja liikutan sitä samalla kun liikutan ukko... Koska kun lataan kuva se tulee yhteen pisteeseen...

vehkis91 [30.04.2008 19:19:53]

#

Tässä ois vieläkin yksi ongelma. Kun lataan ton pelaajan kuvan se tulee vaan yhteen pisteeseen, miten saisin sillein että se tulisi vaikka 4 pisteen "sisälle".

Tämä taitaa ola järjetöntä, mutta en keksi muutakaan.

Ett neuvvoja pliide.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta