m@rcixxx Opublikowano 8 Lipca 2011 Udostępnij Opublikowano 8 Lipca 2011 Ta funkcja wygląda tak: sprite_collision_mask(ind,sepmasks,bboxmode,bbleft,bbright,bbtop,bbbottom,kind,t olerance) w helpie dopisek do tej funkcji brzmi tak: "Please realize that this does not work correctly when an instance with that sprite is already present in the room." Niestety nie napisali co zrobić, żeby działało correctly, czyli do jakiego eventu dać itd. Wpisałem wartości wg. opisu argumentów i nie działa. Chcę zrobić, żeby ze sprita o wymiarach np. 1000x1000 wyciąć kawałek w dowolnym miejscu i żeby miał maskę swojego rozmiaru. Bardzo bym prosił o pomoc. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Makary155 Opublikowano 8 Lipca 2011 Udostępnij Opublikowano 8 Lipca 2011 Nie działa to z instancjami już będącymi w roomie, czyli tą funkcję musisz zastosować przed instance_create. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
m@rcixxx Opublikowano 8 Lipca 2011 Autor Udostępnij Opublikowano 8 Lipca 2011 Nie działa to z instancjami już będącymi w roomie, czyli tą funkcję musisz zastosować przed instance_create. Czyli obiekty muszą być stworzone w kodzie danego room'u lub przez inny obiekt ? A przed instance_create znaczy co ? Edit: w sumie zamiast tłumaczenia na polski helpa wolę jakiś przykład, który udowadnia, że da się. Próbowałem znaleźć rozwiązanie na gmcommunity, tam też mieli z tym niemałe problemy a nawet pisali, że jakieś bugi w tej funkcji są. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
m@rcixxx Opublikowano 8 Lipca 2011 Autor Udostępnij Opublikowano 8 Lipca 2011 Problem rozwiązany, w 90%. Muszę tylko coś zrobić żeby ta maska była na środku rysowanego sprita, bo teraz jest jakby środkiem w punkcie 0x0. A problem tkwił w źle oznaczonych argumentach, bbright,bbtop są w złej kolejności, ma być bbtop,bbright. Przez złe wpisanie wymiary maski zrobiły się "ujemne" i nie było jej. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 9 Lipca 2011 Administratorzy Udostępnij Opublikowano 9 Lipca 2011 Maska jest swoim środkiem sprita w środku sprita którego jest maską. Tzn. jak sprite obiektu ma x i y sprita na 10,10, to maska tej samej wielkości też powinna mieć x i y na 10,10 (mowa cały czas o sprite, nie o obiekcie). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
m@rcixxx Opublikowano 10 Lipca 2011 Autor Udostępnij Opublikowano 10 Lipca 2011 Jednak zrezygnowałem całkowicie z używania tej funkcji bo okazało się, że pojawiły się kolejne bugi. Mam np. playera i wchodzę w ścianę z prawej strony, kolizja jest wykrywana raz wcześniej raz później (prędkość gracza 3, ściana gładka jak...). Wchodzę w ścianę z lewej strony i przechodzę na wylot, kolizja nie wykryta, patent dobry do platformówki ale nie dla mnie :/. Po za tym ta funkcja jest nieoptymalna. Przy dwóch kolidujących obiektach z tą funkcją obciążenie procka wynosi nawet ponad 30%. Robię normalne maski. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 10 Lipca 2011 Administratorzy Udostępnij Opublikowano 10 Lipca 2011 Bo musisz sprawdzać czy pozycja jest wolna przed wykonaniem ruchu, a nie po. Spróbuj sprawdzać dla pozycji x+hspeed, y+vspeed, to będzie z wyprzedzeniem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
m@rcixxx Opublikowano 10 Lipca 2011 Autor Udostępnij Opublikowano 10 Lipca 2011 Ok. ale dlaczego gdy zbliżam się powoli (sprawdzanie za pomocą lengthdir_x/y(speed,direction) nie ma sensu bo speed wynosi 3 czyli tylko 3 piksele na klatkę) to nagle wykrywa mi kolizję z 50 pikseli od obiektu a czasem tuż przy nim ? Druga sprawa to to, że zupełnie inaczej zachowuje się przy kolizji z drugiej strony a ściślej - nie ma tej kolizji, wchodzę sobie w mur gruby na 300px odwracam się... O jej! wykrył kolizję, to dobre, nie ? Proponuję, żebyś sam przetestował tę/ą funkcję i zobaczysz o co chodzi. No i dochodzi sprawa optymalności. 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ę