MiChAl200 Opublikowano 14 Stycznia 2012 Udostępnij Opublikowano 14 Stycznia 2012 Gra jest wygenerowana przez generator i zbudowana z bloków. Tylko te bloki nie są obiektami tylko namalowanymi sprite'ami w surface. Mapa jest także pokryta siatką. (ds_grid_create) i w każdej komórce jest zapisane id obiektu (brak obiektu to -1). Pozostaje jednak jedna rzecz: Kolizje. Dlatego chciałem zrobić, żeby powstawały obiekty kolizji naokoło gracza, jeśli w danym miejscu jest jakiś blok (jeśli w danej komórce jest inna wartość niż -1). Te obiekty mają "na żywo" tworzyć się i usuwać podczas chodzenia postacią. http://img.pl/9YAdfRA - tu mniej więcej jest narysowane. A tu jest filmik z jedną grą i w 2:20 sekundzie jest pokazane to co ja chciałem zrobić. http://www.youtube.com/watch?v=8OKrwOK6Gjg Tworzyłem objekt "obj_kolizja" i zrobiłem z jednym pod ludzikiem, ale coś się psuło (jak z większej wysokości spadałem to on się w ten obiekt wbijał..), potem z pętlą for gdzie sprawdzało każdą komórkę osobno, ale też coś nie wychodziło i obniżało FPS. Wiem że trochę się rozpisałem ale męczę się z tym kilka dni i nie wiem jak to zrobić. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 14 Stycznia 2012 Udostępnij Opublikowano 14 Stycznia 2012 Po co sprawdzać zajęte komórki na około gracza? Jeśli można pobrać komórki najbardziej zdatne do kolizji: Po przez tzw. bounding-box Co do zarządzania takową kolizją - możliwości jest wiele, jednak najprostszą ( wg. mnie ), i dość skuteczną metodą byłoby sprawdzanie najdalej położonego wolnego miejsca po przez wyszukiwanie binarne takowego wypadku, następnie jedynie wystarczy przemieścić tam gracza i odpowiednio zarządzić prędkościami. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MiChAl200 Opublikowano 15 Stycznia 2012 Autor Udostępnij Opublikowano 15 Stycznia 2012 @UP Poradziłem sobie. Zrobiłem inaczej (wymyśliłem sposób zanim odpisałeś) i na razie nie znalazłem, żadnych bugów, ale jakby co to spróbuję twojego sposobu, więc dzięki :) EDIT: Nie, jednak są błędy.. Postać czasem wbija się w klocek. Użyję twojej propozycji, tylko.. nie wiem dokładnie jak to zrobić. Mógłbyś mniej więcej powiedzieć jak to zrobić? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 17 Stycznia 2012 Udostępnij Opublikowano 17 Stycznia 2012 Wykombinowałem coś takiego: http://dl.dropbox.com/u/33615556/extmove.gm6 Jednak brak dynamicznego tworzenia masek kolizji - przykład ukazuje jedynie ruch z wykorzystaniem wyszukiwania binarnego aby znaleźć wolne miejsce. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MiChAl200 Opublikowano 17 Stycznia 2012 Autor Udostępnij Opublikowano 17 Stycznia 2012 Dzięki za przykład. Tylko jak zrobić to, żeby tworzyły się maski kolizji? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 17 Stycznia 2012 Udostępnij Opublikowano 17 Stycznia 2012 http://dl.dropbox.com/u/33615556/dmasks.gm6 Rozumiem, iż coś w tym stylu? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MiChAl200 Opublikowano 18 Stycznia 2012 Autor Udostępnij Opublikowano 18 Stycznia 2012 Wszystko ładnie działa, dzięki za pomoc :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się