MiChAl200 Opublikowano 14 Stycznia 2012 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ć.
Konrad-GM Opublikowano 14 Stycznia 2012 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.
MiChAl200 Opublikowano 15 Stycznia 2012 Autor 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ć?
Konrad-GM Opublikowano 17 Stycznia 2012 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.
MiChAl200 Opublikowano 17 Stycznia 2012 Autor Opublikowano 17 Stycznia 2012 Dzięki za przykład. Tylko jak zrobić to, żeby tworzyły się maski kolizji?
Konrad-GM Opublikowano 17 Stycznia 2012 Opublikowano 17 Stycznia 2012 http://dl.dropbox.com/u/33615556/dmasks.gm6 Rozumiem, iż coś w tym stylu?
MiChAl200 Opublikowano 18 Stycznia 2012 Autor Opublikowano 18 Stycznia 2012 Wszystko ładnie działa, dzięki za pomoc :)
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ę