Cruel_boy Opublikowano 25 Sierpnia 2011 Udostępnij Opublikowano 25 Sierpnia 2011 Otóż, problem wydaje się bardzo prosty, jednak walczyłem z nim bardzo długo, a efektów nie było żadnych. Oraz - nie umiem szukać a na pewno podobny temat istniał. Problem polega na tym: http://screenshooter.net/9608235/gimcien Chodzi o to, że postać w kolizji ze ścianą która jest po prawej jest nieodpowiednia.(widać na załączonym obrazku) Zaś w kolizji z lewą jest poprawnie. I ze ścianą po prawej i po lewej działało dobrze dopóki nie dodałem temu prostokątowi nóg i animacji. Origin jest wycentrowany. EDIT: podobnie jest gdy nad bohaterem jest ściana. nie uderza jej do końca z tą samą odległością. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 25 Sierpnia 2011 Udostępnij Opublikowano 25 Sierpnia 2011 A jak robisz zatrzymywanie się postaci, bo najlepszym rozwiązaniem jest place_free. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cruel_boy Opublikowano 25 Sierpnia 2011 Autor Udostępnij Opublikowano 25 Sierpnia 2011 Właśnie mam place_free, innego łatwiejszego sposobu raczej nie ma.... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 25 Sierpnia 2011 Udostępnij Opublikowano 25 Sierpnia 2011 Błagam, opisz swój problem. Z chęcią bym ci pomógł, ale na tym screenie widzę jakieś dwa bloczki i dwie nóżki. Chodzi o to, że postać w kolizji ze ścianą która jest po prawej jest nieodpowiednia.(widać na załączonym obrazku) Postać jest nieodpowiednia, aha. Edit: EDIT: podobnie jest gdy nad bohaterem jest ściana. nie uderza jej do końca z tą samą odległością. O widzisz, to już daje jakąś wskazówkę. Chodzi ci o to, że jeśli trzymam np. prawy klawisz, to postać ma iść do końca w prawo i ma nie zostawać żaden piksel odległości, tak? Wówczas move_toward_solid się kłania. Ewentualnie pętelka while. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cruel_boy Opublikowano 25 Sierpnia 2011 Autor Udostępnij Opublikowano 25 Sierpnia 2011 postać W KOLIZJI ze ścianą jest nieodpowiednia. na screenie po lewej widać postać, a po prawej jest ściana. między nimi jest mały odstęp, przez który nie można przejść (blokuje się) lecz gdy postać będzie w kolizji z LEWĄ ścianą, nie będzie tego odstępu: http://screenshooter.net/9608235/ldonavm Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 25 Sierpnia 2011 Udostępnij Opublikowano 25 Sierpnia 2011 Może spróbuj użyć maski. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 25 Sierpnia 2011 Udostępnij Opublikowano 25 Sierpnia 2011 Wytłumaczę ci twój problem. GML if ( keyboard_check( vk_right ) ) { if ( place_free( x + 6, y ) ) x += 6; } Zapewne mniej-więcej tak wygląda twój kod. Postać się blokuje, ponieważ odległość między nią a ścianą jest mniejsza niż 6, ale jednak jest. Wystarczy dać taki kod: GML if ( keyboard_check( vk_right ) ) { if ( place_free( x + 6, y ) ) x += 6; else while( place_free( x + 1, y ) ) x += 6; } Ewentualnie: GML if ( keyboard_check( vk_right ) ) { if ( place_free( x + 6, y ) ) x += 6; else move_toward_solid( 0, 0 ); } Gdzie 6 to prędkość bohatera. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cruel_boy Opublikowano 25 Sierpnia 2011 Autor Udostępnij Opublikowano 25 Sierpnia 2011 Maska też jest użyta(na całą szarokość postaci - w końcu to prostokąt) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 25 Sierpnia 2011 Udostępnij Opublikowano 25 Sierpnia 2011 No tak. To dobrze. A teraz zastosuj mój kod. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cruel_boy Opublikowano 25 Sierpnia 2011 Autor Udostępnij Opublikowano 25 Sierpnia 2011 Zastosowałem twój kod, lecz musiałem go naprawić: move_CONTACT_solid, nie toward. Lecz teraz jest zupelnie na odwrot - w kolizji z lewą ścianą tworzy się odstęp. Gdy dodałem część twojego kodu także do lewego klawisza, postać zaczęła teleportować się w prawo do najbliższej ściany. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 25 Sierpnia 2011 Udostępnij Opublikowano 25 Sierpnia 2011 Podaj mi gdzie masz ustawiony orign, szerokość maski. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
candy Opublikowano 25 Sierpnia 2011 Udostępnij Opublikowano 25 Sierpnia 2011 Skorzystaj z przykładów: tutaj. Poszukaj plików o nazwie "platformówka", "ruch platformowy" itp. Na pewno znajdziesz coś dla siebie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 25 Sierpnia 2011 Udostępnij Opublikowano 25 Sierpnia 2011 Zastosowałem twój kod, lecz musiałem go naprawić: move_CONTACT_solid, nie toward. Lecz teraz jest zupelnie na odwrot - w kolizji z lewą ścianą tworzy się odstęp. Gdy dodałem część twojego kodu także do lewego klawisza, postać zaczęła teleportować się w prawo do najbliższej ściany. Fakt, contact. Z GMem od dawna nie mam do czynienia. Pisanie, że musiałeś go naprawić jest co najmniej absurdalne, o czym przekonasz się za chwilę :) . "Teleportuje się" w prawo, ponieważ nie zmieniłeś kodu. Zero zamień na 270 w przypadku pójścia w lewo. Oczywiście, jeśli jeszcze na to nie wpadłeś, w funkcji move_contact_solid. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SKiD Opublikowano 25 Sierpnia 2011 Udostępnij Opublikowano 25 Sierpnia 2011 Musisz tylko zamienić x + 6 i x+=6 na x-6 || x-=6 i vk_right na vk_left Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cruel_boy Opublikowano 25 Sierpnia 2011 Autor Udostępnij Opublikowano 25 Sierpnia 2011 Dobra, problem występuje nadal. Lecz - dopóki nie dotknę prawej ściany lewa będzie funkcjonować poprawnie. W dodatku - jeśli skoczę na lewą ścianę, zacinam się w powietrzu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SKiD Opublikowano 25 Sierpnia 2011 Udostępnij Opublikowano 25 Sierpnia 2011 Jaki masz mask gracza? Cały prostokąt czy jego animację chodzenia też... Możesz spróbować dać oddzielny mask to może zadziałać... Pobaw się z tym coś na pewno pomorze. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 25 Sierpnia 2011 Udostępnij Opublikowano 25 Sierpnia 2011 Miałeś mi podać orign i szerokość maski. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cruel_boy Opublikowano 25 Sierpnia 2011 Autor Udostępnij Opublikowano 25 Sierpnia 2011 "Miałeś mi podać orign i szerokość maski." no mówiłem że jest na całą szerokość. wystarczy spojrzeć na screenshoota. ale dobra - wymiary maski to 32x64 a origin to 16x0 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SKiD Opublikowano 25 Sierpnia 2011 Udostępnij Opublikowano 25 Sierpnia 2011 A animacja nóg wykracza poza maskę? (Jeśli masz maskę tylko na prostokącie) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 25 Sierpnia 2011 Udostępnij Opublikowano 25 Sierpnia 2011 GML if ( keyboard_check( vk_right ) ) { if ( !collision_point(x+17,y,all,1,1) ) x += 6; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cruel_boy Opublikowano 25 Sierpnia 2011 Autor Udostępnij Opublikowano 25 Sierpnia 2011 dobra, sam rozwiązałem problem. place_free w x było ustawione na złą wartość, która powodowała tą odległość. zmieniłem na 4 i smiga. dzieki wam bardzo 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ę