Kolizja, krawędzie ekranu i odbijana piłka (Allegro, C++)
Ostatnio zmodyfikowano 2010-03-28 17:25
superkam Temat założony przez niniejszego użytkownika |
Kolizja, krawędzie ekranu i odbijana piłka (Allegro, C++) » 2010-03-27 18:54:36 Otóż piszę prostego Arcanoida w C++ z użyciem Allegro 4.4.0 i mam mały problem i co za tym idzie pytania...
1. Jak zrobić kolizję platformy z krawędziami ekranu 640x480 ? 2. Jak zrobić kolizję kulki ze zbijanymi klockami żeby one znikały ? 3. Jak zrobić żeby piłka odbijała się od krawędzi ekranu z wyjątkiem dolnej i od platformy ?
Proszę o szybką odpowiedź ;P |
|
Bartaz |
... » 2010-03-27 21:12:49 1... 2.Poprostu jak bedzie kolizja to robisz ze ma nie wyswietlac i ze ma nie byc kolizji np(nie rob tak to tylko przyklad) if(czy_kolizja_kulka_z_klockami_byla_juz_odbita==true) { nie_odbijaj(); } 3.Nie wiem o co ci chodzi xD |
|
superkam Temat założony przez niniejszego użytkownika |
» 2010-03-27 21:15:06 Człowiecze ja umiem logicznie myśleć! O funkcje za to odpowiadające tu chodzi! ;P |
|
szyx_yankez |
» 2010-03-27 21:21:37 |
|
dmx81 |
» 2010-03-27 21:25:51 1. napisz warunki brzegowe, tzn jesli obiekt.x<0, obiekt.x=0 - analogicznie w druga strone 2. najpierw napisz funkcje kolizja
a. czyli jesli obiekt1.x+obiekt1.szerokosc wieksze od obiekt2.x (czyli wszedl w obiekt2 od jego lewej strony... analogocznie napisz dla prawego boku, gory i dolu) b. obiekt ten powinien tez posiadac zmienna typu BOOL np. bool zderzenie=NULL jesli kolizja(obiekt1, obiekt2) , zderzenie obiekt2=true, if zderzenie obiekt2==false, masked_blit_.....( czyli, ze jesli ta zmienna ustawiona na false, ma rysowac, inaczej nie narysuje)
3. poczytaj najpierw dokladnie allegro - kurs, mi bardzo pomogl, pisze jako poczatkujacy te odpowiedzi, bo sam go przerobilem, no i duzo cwiczen...ja tez ciagle duuuuzo pytam:)
|
|
superkam Temat założony przez niniejszego użytkownika |
» 2010-03-27 23:41:19 Dzięki za gotowca, ale na razie nie użyję tego bo chce to zrozumieć i się nauczyć. Ewentualnie jak nie będe jeszcze czegoś wiedział to przeanalizuję kod. Dzieki wszystkim! |
|
pekfos |
» 2010-03-28 12:40:39 3.Odbijanie: będziesz musiał nieźle pokombinować by ominąć trygonometrię(chyba że sobie z nią radzisz). Piłka musi się odbić od ściany pod tym samym kątem pod którym w ścianę uderzyła. |
|
szyx_yankez |
» 2010-03-28 13:00:04 3.Odbijanie: b ę dziesz musia ł nie ź le pokombinowa ć by omin ą ć trygonometri ę( chyba ż e sobie z ni ą radzisz ).Pi ł ka musi si ę odbi ć od ś ciany pod tym samym k ą tem pod kt ó rym w ś cian ę uderzy ł a.
Tym to mnie naprawdę rozśmieszyłeś, jaka trygonometria? Dobra rozwiejmy wszelkie wątpliwości. if( pos_ball.b == 1 ) { pos_ball.x++; pos_ball.y--; }
if( pos_ball.b == 2 ) { pos_ball.x++; pos_ball.y++; }
if( pos_ball.b == 3 ) { pos_ball.x--; pos_ball.y++; }
if( pos_ball.b == 4 ) { pos_ball.x--; pos_ball.y--; }
if( pos_ball.b == 1 && pos_ball.x > 1024 - 30 ) pos_ball.b = 4;
if( pos_ball.b == 2 && pos_ball.x > 1024 - 30 ) pos_ball.b = 3;
if( pos_ball.b == 4 && pos_ball.x < 0 ) pos_ball.b = 1;
if( pos_ball.b == 3 && pos_ball.x < 0 ) pos_ball.b = 2;
if( pos_ball.b == 4 && pos_ball.y < 0 ) pos_ball.b = 3;
if( pos_ball.b == 1 && pos_ball.y < 0 ) pos_ball.b = 2;
To jest cały kod odpowiadający za kolizje i poruszanie piłeczką, widzisz gdzieś tu jakiegoś sinusa albo cosinusa? |
|
« 1 » 2 3 4 |