Gość darkatraz Napisano 12 Maja 2012 Udostępnij Napisano 12 Maja 2012 (edytowane) 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 12 Maja 2012 przez darkatraz Cytuj Link to post Share on other sites
Rocik 21 Napisano 12 Maja 2012 Udostępnij Napisano 12 Maja 2012 (edytowane) 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 12 Maja 2012 przez Rocik Cytuj Link to post Share on other sites
Gość darkatraz Napisano 12 Maja 2012 Udostępnij Napisano 12 Maja 2012 Tylko, że ja mapy nie mam robione jako kafli tylko jako jedna tekstura. W pliku zawarłem obydwie tekstury. Jedna widzialna jako miasto, a druga odpowiedzialna od kolizji. Cytuj Link to post Share on other sites
Rocik 21 Napisano 12 Maja 2012 Udostępnij Napisano 12 Maja 2012 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ę. Cytuj Link to post Share on other sites
Gość darkatraz Napisano 12 Maja 2012 Udostępnij Napisano 12 Maja 2012 A np kolizji po kolorach urzyc nie mozna? Tylko jak taka kolizja wyglada? Cytuj Link to post Share on other sites
Rocik 21 Napisano 12 Maja 2012 Udostępnij Napisano 12 Maja 2012 W jaki sposób kolizja po kolorach? Da się wszystko, ale czasem napisanie kodu do czegoś takiego będzie bardzo trudne. Najłatwiej jest zrobić to na prostokątach. Cytuj Link to post Share on other sites
Recommended Posts
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ą.