Inny sposób na kolizje
Ostatnio zmodyfikowano 2009-08-07 16:34
eBbi Temat założony przez niniejszego użytkownika |
Inny sposób na kolizje » 2009-08-07 14:52:38 Witam all :}. Mam taki mały problem. No może nie problem ale chcę się poradzić. Piszę taką prostą grę która posłuży do napisania tutora. W grze tej chodzi ze odbija się kólka od paletki i uderza albo w ściany albo w klocki. Celem jest zbicie wszystkich klocków. Noi zatrzymałem się na kolizji piłeczki z klockami. -Pierwszy algorytm jaki napisałem polegał na tym że szuka wysokość(y)i szerokość(x) piłeczki i wszystkich klockó( klocki w tablicy: klocek[15][3], 0 -x, 1 -y, 2 -czy istnieje. szerokość 50 i 20 px wysokosc.), a następnie sprawdza czy się mieści w danej szerokości klocka i czy się zgadza wysokość. taki poglądowy kodzik: for(int i = 0; i<15; i++); if(!klocek[i][2]) contiune; if(y == klocek[i][1]+20) { if(x>=klocek[i][0]&& x<=klocek[i][0]+50) klocek[i][2]=0; } }
Minusem tego jest że musiał bym pisać taki algorytm dla każdej strony z osobna, bo ten kawałem zalicza tylko uderzenie od dołu. I tu się chce was poradzić. Jak inaczej napisali byście kolizje do tej gry? . Myslałem jeszcze o zarezerwowaniu danego koloru dla klocków i sprawdzanie tla pileczki. Jak najedzie np na zielony to sprawdzi do jakiego klocka zalicza się ten piksel i go usunie. Czekam na inne wasze propozycje. Z góry pozdrawiam eBbi. EDIT: czyż by nie było innych możliwości? |
|
malan |
» 2009-08-07 15:35:51 1. getpixel( bufor, poz_x, poz_y );
2. Możesz też spróbować odczytywać pozycję piłeczki: if( poz_x >= 0 && poz_x <= 20 && poz_y >= 0 && poz_y <= 20 ) Usun_pileczke();
poz_x i poz_y to pozycja piłeczki. Jak można zauważyć po parametrach klocek jest kwadratem i jest położony w lewym górnym rogu ekranu. |
|
DejaVu |
» 2009-08-07 15:36:33 Sporo tematów było już poruszanych na forum: [google] site:forum.ddt.pl kolizjeMyślę, że coś tam znajdziesz sensownego. Generalnie zastanów się czy zrobienie z piłki kwadratu (kolizyjnego) jest akceptowalnym rozwiązaniem. W tym momencie masz sytuację, w której wykrywasz kolizje między prostokątami, a co za tym idzie możesz wykorzystać funkcję, która wielokrotnie przewijała się na forum. |
|
WunM |
» 2009-08-07 16:34:10 Jeśli pracował bym na polygonach i budował silnik fizyki to pewnie wykorzystał bym metodę SAT. |
|
« 1 » |