Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Kolizja, krawędzie ekranu i odbijana piłka (Allegro, C++)

Ostatnio zmodyfikowano 2010-03-28 17:25
Autor Wiadomość
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
P-15484
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
P-15489
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
P-15492
szyx_yankez
» 2010-03-27 21:21:37
Masz http://forum.ddt.pl/?Tid=2198 wrzuciłem specjalnie dla Ciebie mojego arkanoida(kod w paczce).
P-15494
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:)
P-15495
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!
P-15505
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.
P-15517
szyx_yankez
» 2010-03-28 13:00:04
C/C++
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.
C/C++
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?

P-15518
« 1 » 2 3 4
  Strona 1 z 4 Następna strona