Skocz do zawartości

Kolizja w C++


Gość darkatraz

Recommended Posts

Gość darkatraz

Siemano.

Jako projekt na zaliczenie roku z programowania trzeba w grupach max. 3 osobowych stworzyć grę, a dokładnie jej krótki fragment jako zajawke.

 

Na mnie przypadła robota stworzenia kolizji do gry.

 

Więc problem polega na tym, że nie wiem jak taką kolizję stworzyć. Nauczyciel polecił bym stworzyć normalną mapę i drugą mapę z wyznaczonymi miejscami gdzie postać ma kolidować. No i tu jest pies pogrzebany. Bo nie mam zielonego pojęcia jak napisać kod by program wyświetlał normalną mapę po której postać się porusza, a miejsca gdzie ma kolidować z drugiej mapy.

 

Bym zapomniał. Gra jest tworzona z wykorzystaniem SFML 1.6 pod Visual'a 2010.

 

Załączam te dwie grafiki w jednej paczce.

http://www6.zippyshare.com/v/59491005/file.html

 

Mam nadzieję, że pomorzecie mi z tym??

Edytowane przez darkatraz
Link to post
Share on other sites

Najprościej zrobić to tak:

 

struct map

{

int tile_type; // typ podłoża

int tile_texture_id; // Numer grafiki, czy jej tekstura

};

 

Potem robimy tablice dwuwymiarowa (x,y) jakoś tak:

map mapa[ ilość kafli szerokości ][ ilość kafli wysokości ];

 

To powinieneś się domyślać, że operować na tych elementach tablicy można za pomocą:

for (int x=0; x<ilosc_kafli_x; ++x)

{

for (int y=0; y<ilosc_kafli_y; ++y)

{

mapa[x][y].tile_type = 0 // i umownie 0 to ściana, 1 podłoga

}

}

Sama kolizja to coś takiego:

if (_y <= y*32 + wysokość_gracza/2

&& _y + wysokość_gracza/2 >= y*32

&& _x <= x*32 + szerokość_gracza/2

&& _x + szerokość_gracza/2 >= x*32)

return true; // wystąpiła kolizja

 

32 jeżeli kafle tekstur maja 32x32 pixele, _y to pozycja w pionie gracza

 

Poza tym fajne zadanie macie ;)

Edytowane przez Rocik
Link to post
Share on other sites

To nadal nie jest problem, jeżeli działa ona na zasadzie pixeli, będzie działa na podobnej zasadzie, po prostu musisz sobie jakoś wczytać (najlepiej do tablicy) prostokąty kolizji i w przypadku ruchu sprawdzać, czy postać nie natknęła się na ścianę.

Link to post
Share on other sites

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Odpowiedz w tym wątku...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...