XxMichałxX Opublikowano 17 Marca 2009 Udostępnij Opublikowano 17 Marca 2009 step u ludka: GML if keyboard_check(vk_up) and !place_free(x,y+1) { y-=2 vspeed=-10 } if place_meeting(x,y+1,o_ziemia) { vspeed=0 move_contact_solid(270,4) } if place_free(x,y+1) {gravity=0.5} else {gravity=0} if keyboard_check(vk_left) or keyboard_check(vk_right) { if keyboard_check(vk_left) { dir='left' sprite_index=s_player_step_left if place_free(x-5,y) then x-=5 } if keyboard_check(vk_right) { dir='right' sprite_index=s_player_step_right if place_free(x+5,y) then x+=5 } } else { if dir='left' then sprite_index=s_player_stand_left if dir='right' then sprite_index=s_player_stand_right } gdy skocze ludkiem to on poleci do gory, potem spadnie i wbije sie w ziemie (o_ziemia) do połowy, a na starcie gry leci z gory i spada na nią i nie wbija sie w nią.. czemu? edit: mogę wysłać plik Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 17 Marca 2009 Udostępnij Opublikowano 17 Marca 2009 if keyboard_check(vk_up) and !place_free(x,y+1) { y-=2 vspeed=-10 } no cholerę to y-=2? O.o if place_meeting(x,y+1,o_ziemia) { vspeed=0 move_contact_solid(270,4) } ja bym polecał place_free. Byś miał to odrazu dla wszystkich obiektów solidnych. Chyba że po prostu o_ziemia to parent wszystkim ziem. Poza tym zamień move_contact_solid i vspeed miejscami i zamiast długości 4 wstaw tam vspeed Możesz też dodać do warunku że tylko jeśli vspeed>0. To zoptymalizuje kod. Po co ma zerować prędkość skoro już jest zerem? Zwłaszcza że z tego co wiem move_contact_solid raczej nie powinno sie zbyt często wykonywać a teraz będzie się robić zawsze jak player stoi. if place_free(x,y+1) {gravity=0.5} else {gravity=0} Nie przepadam za wbudowaną grawitacją. Lepiej samemu zwiększać vspeeda. Ale skoro ci tak wygodniej... if keyboard_check(vk_left) or keyboard_check(vk_right) { if keyboard_check(vk_left) { dir='left' sprite_index=s_player_step_left if place_free(x-5,y) then x-=5 } if keyboard_check(vk_right) { dir='right' sprite_index=s_player_step_right if place_free(x+5,y) then x+=5 } } Co to w ogóle jest?! Pomyśl chwilę nad tym kodem a zobaczysz jak bezsensowny on jest! :/ Niedawno ktoś mi na PW wysyłał identycznie kretyński kod jak prosił o pomoc. :P sprite_index=s_player_step_left Domyślam się że to jest sprite odwrócony w lewo. Po cholerę robić dwa sprity dla lewo i dla prawo? Nie możesz człowieku zrobić odbicia lustrzanego? image_xscale=-1 else { if dir='left' then sprite_index=s_player_stand_left if dir='right' then sprite_index=s_player_stand_right } Też bez sensu. A plik wyślij. Jak to wszystko poprawisz powinno działać, ale może masz tam więcej takich bezsensownych kodów. Tylko nie w gmk!!! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
XxMichałxX Opublikowano 17 Marca 2009 Autor Udostępnij Opublikowano 17 Marca 2009 ale nie moge przekonwertowac bo ten konwerter jest w javie. jave mam a i tak nie moge tego włączyc edit: no cholerę to y-=2? O.o no bo: nacisniecie strzalki do gory powoduje ze vspeed = -10, i wtedy ludek ma podskoczyc.. ale gdy ludek dotyka o_ziemia to vspeed wciaz = 0 wiec nie podskoczy, to dalem y-=2 zeby nie dotykal ziemi i wtedy zrobil vspeed=-10 x) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 17 Marca 2009 Udostępnij Opublikowano 17 Marca 2009 jak dasz mu vspeed = -10 to też nie będzie dotykał ziemi.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
XxMichałxX Opublikowano 17 Marca 2009 Autor Udostępnij Opublikowano 17 Marca 2009 ale jakoś wtedy nie leci do góry Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 17 Marca 2009 Udostępnij Opublikowano 17 Marca 2009 Napisz własny ruch platformowy, to nie będzie tego typu problemów... (żeby nie było, własny tzn. nie korzystając z vspeed/hspeed/gravity/move_bounce_x()/move_contact_x()) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
XxMichałxX Opublikowano 17 Marca 2009 Autor Udostępnij Opublikowano 17 Marca 2009 ta, najlepiej będzie jak własnego gm-a napisze Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 17 Marca 2009 Udostępnij Opublikowano 17 Marca 2009 lepiej jak byś już podał plik gm6 byśmy mogli zobaczyć co masz nie tak... <_< Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 17 Marca 2009 Udostępnij Opublikowano 17 Marca 2009 nacisniecie strzalki do gory powoduje ze vspeed = -10, i wtedy ludek ma podskoczyc.. ale gdy ludek dotyka o_ziemia to vspeed wciaz = 0 wiec nie podskoczy, to dalem y-=2 zeby nie dotykal ziemi i wtedy zrobil vspeed=-10 x) Boże człowieku. Skoro masz takie coś to się nie dziw :/ Najpierw sprawdzaj place_free i zeruj vspeed a dopiero potem sprawdzaj naciśnięcie strzałki. Tak trudno na to wpaść? Zresztą gdybyś zrobił wszystko co mówiłem to by nie było tego problemu (chodzi o to jakbyś dodał ten dodatkowy warunek). Widać, że kompletnie lejesz na to co ja mówię. ta, najlepiej będzie jak własnego gm-a napisze Dwa słowa: Bez komentarza. Tym zdaniem się po prostu pogrążyłeś. Napisanie własnego ruchu nie boli. 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ę