Odbijająca się piłka od ścian okna
Ostatnio zmodyfikowano 2010-12-25 17:31
Marys Temat założony przez niniejszego użytkownika |
Odbijająca się piłka od ścian okna » 2010-12-20 16:24:19 Witam, jak zrobić odbijającą się piłkę od ścian okna o rozmiarze, który podajemy? |
|
waxx |
» 2010-12-20 16:43:47 if(Xpilki > szer_okna || Xpilki < 0) predkosc_pilki.x *= -1; |
|
ison |
» 2010-12-20 16:44:01 Chcesz gotowiec czy masz problem z jakąś konkretną rzeczą? kąt odbicia = kąt padania, piłka może lecieć tylko w 4 kierunkach jeśli uwzględniamy tylko linie (od których się odbija) równoległe do osi OX/OY można to w prosty sposób zaif'ować // mamy 2 enumy move_horizontal i move_vertical, mówią one czy piłka porusza się w prawo/lewo, górę/dół speed to prędkość z jaką porusza się piłka, SCR_W i SCR_H - rozmiar okna (na przykładzie Allegro): if( move_vertical == UP ) kulka_y -= speed;
if( move_vertical == DOWN ) kulka_y += speed;
if( move_horizontal == LEFT ) kulka_x -= speed;
if( move_horizontal == RIGHT ) kulka_x += speed;
if( kulka_x > SCR_W - kulka->w ) move_horizontal = LEFT;
if( kulka_x < 0 ) move_horizontal = RIGHT;
if( kulka_y > SCR_H - kulka->h ) move_vertical = UP;
if( kulka_y < 0 ) move_vertical = DOWN;
|
|
dmx81 |
» 2010-12-20 17:33:13 a ja od siebie dodam (o ile dobrze pamietam, ale moge sie mylic), kulka_x i kulka_y to wspolrzedne srodka kolka (chyba ze uzywasz BITMAPY), jesli jednak rysujesz okrąg - to zamiast if (kulka_x<0) uzywasz if( kulka_x < 0 + kulka + r )
wiadomo, jesli rysunek(BITMAP) - wtedy patrzysz na wierzcholki obrazka, jesli okrag, sprawdzasz, czy odleglosc srodka okregu jest wieksza niz promien okregu (inaczej kolizja i odbicie) |
|
Mazzir |
» 2010-12-25 17:20:31 Jeżeli piłka.x jest większe lub równe okno.x to odbij itd. Tyle, że musisz wyliczyć sobie kont odbicia ;p Sam kiedyś próbowałem i mi się odechciało xD |
|
DejaVu |
» 2010-12-25 17:31:02 Jeżeli odbicie robisz od ściany, która jest pod kątem prostym to wystarczy zrobić np.
if( obiekt.x + obiekt.promien >= sciana.x ) obiekt.predkosc_x = - obiekt.predkosc_x;
|
|
« 1 » |