Adriann Opublikowano 23 Października 2021 Udostępnij Opublikowano 23 Października 2021 WItajcie! Próbuję znaleźć rozwiązanie na sytuację kiedy w platformówce postać kończy skok a ja wciskam przycisk skoku. Obecnie może zacząć skakać dopiero jak dotknie podłogi a ja po dotknięciu ponownie wcisnę skok. Co mogę zrobić żeby wciśnięty klawisz w obecnej formie przed dotknięciem podłoża sprawił że już po dotknięciu postać skoczy? //Skakanie na tej zasadzie // PresskeyJump to po prostu keyboard_check_pressed // a RellskeyJump to keyboard_check_released if PresskeyJump && jumps>0 { image_index=0; if jumps>1 vspd = -jspd;else vspd = -jspd*.8; jumps-=1; // } //puszczenie klawisza if vspd<vspdMax && RellkeyJump { vspd/=1.5; } +Jest kod jak dotykamy podłoża dodaje jumps=2 i jak nie dotykamy to jest alarm ustawiający jumps=0 Tu gość na początku ( 0:34) opisuje problem i pokazuje rozwiązanie ale nie wiem jak je przenieść do gmla Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 24 Października 2021 Udostępnij Opublikowano 24 Października 2021 No to bardzo prosto. Zamiast resetować jumps=2 tylko przy kolizji z podłożem wykrywaj też czy ta kolizja będzie za x kratek. Najprostsze rozwiązanie to (nie ważne jakiej funkcji używasz) place_meeting(x, y+max(0,vspeed+gravity)*2, podłoże) // *2 jest jako 2 klatki w przyszłość // max(0,vspeed+gravity) max() robimy by brać pod uwagę tylko gdy postać spada. A same vspeed+gravity to nasza prędkość która będzie się zwiększać o gravity co klatkę Edit: w razie jakby obiekt poruszał się szybciej niż jest jego wysokość to trzeba zastosować collision_line() pomiędzy punktami Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Adriann Opublikowano 24 Października 2021 Autor Udostępnij Opublikowano 24 Października 2021 @Threef Tak tylko wtedy skok się zacznie przed dotknięciem podłoża a ja chcę żeby wciąż po. Chodzi tylko o to żeby zadziałał klawisz skoku przed tą kolizja z podłogą i już po kolizji skoczył. Ciężko mi to wyjaśnić, na filmie gość zrobił to lepiej ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 24 Października 2021 Udostępnij Opublikowano 24 Października 2021 To może mieć zmienną np. doJump = false; i zrobić collision_line na te kilka pixeli w dół od gracza i jeśli wykrywa podłoże oraz vspd > 0 to daje doJump = true; a w kodzie zamieścić coś takiego if (PresskeyJump or doJump) && jumps>0 { image_index=0; if jumps>1 vspd = -jspd;else vspd = -jspd*.8; jumps-=1; // doJump = false; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 25 Października 2021 Administratorzy Udostępnij Opublikowano 25 Października 2021 Jeśli ma skoczyć 1-2 klatki po naciśnięciu, to wystarczy tak: if keyboard_key_pressed(klawisz skoku) PresskeyJump == 2; if (PresskeyJump) { // ta część kodu odopowiadająca za skok (najlepiej tylko gdy postać dotyka podłoża) } if (PresskeyJump > 0) PresskeyJump--; 2 to liczba klatek przez jakie po wciśnięciu klawisza uznawać, że nastąpił skok. Zbyt duża wartość spowoduje jednak niechciane skoki. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rozwiązanie Adriann Opublikowano 25 Października 2021 Autor Rozwiązanie Udostępnij Opublikowano 25 Października 2021 Dziękuję bardzo panowie! Śmiga elegancko, od razu całość jest bardziej responsywna :3 Najlepiej pasuje mi to ostatnie rozwiązanie od Gnyska gnysek 1 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ę