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

[SDL, C++] Odbicie obiektu po kolizi

Ostatnio zmodyfikowano 2011-08-11 17:22
Autor Wiadomość
dudero
Temat założony przez niniejszego użytkownika
[SDL, C++] Odbicie obiektu po kolizi
» 2011-08-11 16:36:48
Witam,
Mam taki problem, program rozpoznaje kolizję dwóch prostokątów prawidłowo, ale chciałbym żeby po kolizji jeden prostokąt został przesunięty o jakiś wektor np.
Przed kolizją:
prostokat.x = 100;
Po kolizji:
prostokat.x = 200;

Jeśli napiszę coś takiego to niestety prostokąty nachodzą na siebie i nie otrzymuje oczekiwanej zmiany:

C/C++
prz.x = 100;
if( check_collision( player, prz ) == true )
     prz.x = 200;

P-38810
DejaVu
» 2011-08-11 16:39:20
Przesunięcie obiektu:
C/C++
prostokat.x += 100;
P-38811
dudero
Temat założony przez niniejszego użytkownika
» 2011-08-11 16:56:36
Po takiej operacji prostokąt się nie przesuwa. Dwa prostokąty nakładają się na siebie tak jakby kolizja nie występowała.
Może ma na to jakiś wpływ to, że mój prostokąt tak naprawdę jest bitmapą, już tłumaczę o co mi chodzi:

C/C++
SDL_Surface * przeszkoda = NULL;
przeszkoda = SDL_LoadBMP( "przeszkoda.bmp" );
prz.x = 100;
SDL_BlitSurface( przeszkoda, NULL, ekran, & prz );
// i tu dopiero próbowałem sprawdzać kolizję i przesuwać ten prostokąt
if( check_collision( player, prz ) == true )
P-38818
DejaVu
» 2011-08-11 17:11:59
Jak w pętli wczytujesz grafikę i ustawiasz położenie to nic się przesuwać nie będzie. Poza tym kolizje w grach to temat złożony i wymaga wielu przemyśleń oraz kompromisów typu 'łatwiej, lepiej czy wydajniej'.
P-38837
dudero
Temat założony przez niniejszego użytkownika
» 2011-08-11 17:15:42
Zdaję sobie sprawę, że kolizję to temat złożony. Ja po prostu chcę żeby po kolizji dwóch prostokątów jeden się przesuwał. Wywnioskowałem z twojej wypowiedzi, że za pomocą bitmapy tego nie zrobię tak ? Jeśli masz jakiś prostszy pomysł to chętnie go wypróbuje.
P-38841
DejaVu
» 2011-08-11 17:22:07
Bitmapa... to tylko reprezentacja graficzna obiektu. W praktyce sprawdzasz czy kolidują prostokąty/okręgi czy inne figury, które sobie oprogramujesz.
Jeżeli umiesz wykryć kolizję oraz przesuwać obiekty, które chcesz na scenie to resztę powinieneś sam sobie umieć napisać (co jest najtrudniejsze). Wątpię czy komuś się będzie chciało Ci dać kod, który Ciebie zadowoli. Spróbuj poszukać jakichś tutoriali jeżeli samemu nie możesz nic wymyślić lub poczekać ja kogoś innego wypowiedź...
P-38850
« 1 »
  Strona 1 z 1