SockPuppet Opublikowano 19 Stycznia 2015 Udostępnij Opublikowano 19 Stycznia 2015 Dzień dobry. Jestem zupełnie świeżą i zieloną osobą, ale od jakiegoś czasu próbowałam się zabrać za zrobienie gierki z użyciem tego cudownego programu, konkretnie platformówki. Mniej-więcej obczaiłam już, jak zrobić ludzika i platformy, po których będzie skakał. Jak na razie jest cudownie, jednakowoż jeden problem nie daje się rozwiązać. Mianowicie, ludzik potrafi skakać, ale no właśnie. Może też ponawiać skoki, będąc w powietrzu, a tak chyba nie powinno być. To znaczy, nauczyłam go już, żeby spadał, a nawet żeby lądował, ale uważam, że powinien móc skakać tylko będąc akurat na ziemi, inaczej trochę mija się z celem. Na pewno jest jakiś dający się ogarnąć sposób, by uniemożliwić mu tą osobliwą lewitację. 2 Inny problem polega na tym, że ludzik, zamiast lądować idealnie na platformie, to ląduje gdzieś "wewnątrz" platformy, a nawet uwiesza się gdzieś na dole. No i jeszcze 3 - potrafi przeskoczyć platformę od dołu, a uważam, że powinien się jednak zderzyć z nią łebkiem. Jeśli ktoś w prosty, łopatologiczny sposób mógł pomóc mi z tymi bolączkami będę dozgonnie wdzięczna. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 19 Stycznia 2015 Administratorzy Udostępnij Opublikowano 19 Stycznia 2015 Sprawdzaj w evencie skoku, czy pod spodem znajduje się podłoga. W ten sam sposób jak przy sprawdzaniu, kiedy ma się zatrzymać :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
gilos99 Opublikowano 20 Stycznia 2015 Udostępnij Opublikowano 20 Stycznia 2015 2. A w obiekcie podłogi zaznaczyłeś solid? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SockPuppet Opublikowano 20 Stycznia 2015 Autor Udostępnij Opublikowano 20 Stycznia 2015 No właśnie nie wiem, jak sprawdzić, czy jest podłoga. Proszę o wybaczenie, ale jestem momentami trochę nieogarnięta jeśli chodzi o takie niektóre rzeczy. Rozumiem, że jeśli pod spodem nie będzie podłogi, to mam mu kazać nie skakać. Czyli zrobić takie dwie opcje. Tak, wszystkie platformy i podłoga są solidne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 20 Stycznia 2015 Udostępnij Opublikowano 20 Stycznia 2015 Blokowanie skoku w powietrzu jest najłatwiejszym z twoich problemów. Skoro podłoga jest solid to aby sprawdzić czy postać stoi na niej musisz wykonać prosty test. Czy jak przesunę postać o 1px w dół to będzie kolizja? Wystarczy do tego sprawdzenie tego place_free(x, y+1). Natomiast twoje problemy z kolizją mogą być rozwiązane na kilka sposobów. Pierwszy sposób który od razu zadziała to po wykryciu że postać jest wewnątrz podłogi musisz ją z tamtąd wyjąć. Funkcja move_outside_solid() to rozwiąże. Niestety ten sposób może czasem powodować poważne błędy (zależy od designu mapy). Drugi sposób to wykrywanie czy za chwilę (następny step) dojdzie do kolizji i zmianie ruchu w taki sposób aby do niej nie doszło. Ten sposób będzie częściej działać. Pewnie gdzieś masz kod od grawitacji wyglądający tak: GML if(place_free(x,y+1)) { gravity=0.1 } else { gravity=0 } Musisz go zmienić w coś takiego: GML if(place_free(x,y+1)) { gravity=0.1 } else { gravity=0 move_contact_solid(270,0) } Sposób ten działa na zasadzie nie pozwolenia postaci na wskoczenie "wewnątrz" podłogi, a zamiast tego przesuwa ją jak najbliżej. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SockPuppet Opublikowano 20 Stycznia 2015 Autor Udostępnij Opublikowano 20 Stycznia 2015 No tak. Problem z wskakiwaniem wewnątrz podłogi już rozwiązany (bardzo dziękuję) natomiast skakanie jak na razie mnie przerasta. Rozumiem, że mam wpisać kod if(place_free(x,y+1))...a potem co? I czy ten kod ma być wpisany w evencie skakania? No i jeszcze jest coś - kiedy w trakcie chodzenia w lewo czy w prawo każę mu skoczyć, to chciałabym, żeby skakał po skosie, tak jakby wypadkową kierunku biegu i skakania, a skacze mi wtedy idealnie do góry. A poza tym robi coraz dziwniejsze rzeczy. Znika, nagle z niczego przeskakuje przez podłogę jak za długo na niej postoi, zatrzymuje się w powietrzu... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 20 Stycznia 2015 Udostępnij Opublikowano 20 Stycznia 2015 place_free(x,y+1) musi być sprawdzone razem ze sprawdzeniem klawisza skoku. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SockPuppet Opublikowano 20 Stycznia 2015 Autor Udostępnij Opublikowano 20 Stycznia 2015 Mam to wpisać przed poleceniem skoku? Bo jak na razie problem pozostaje nie do ruszenia. Chyba jestem na tyle durna, że potrzebuję tłumaczenia niektórych rzeczy krok po kroku. A co gorsza, mój ludzik podejrzanie "klei się" do boków platform, a powinien się "kleić" tylko do górnej części. Chyba spaprałam coś z kodem, ale nie wiem, jak to rozwiązać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 21 Stycznia 2015 Udostępnij Opublikowano 21 Stycznia 2015 Pokaż twój kod gdzie sprawdzasz kolizję z platformami. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SockPuppet Opublikowano 21 Stycznia 2015 Autor Udostępnij Opublikowano 21 Stycznia 2015 Właściwie to nawet nie wiem, gdzie mam wpisać ten kod. Zasadniczo wpisałam w evencie pres <Space> (bo skakanie chcę na spacji) jump to position (0, 50) i zaznaczyłam relative. Próbowałam wpisywać różne kody, kazałam mu opadać na ziemię przy puszczeniu spacji, ale nic to nie daje. Rozumiem, że w evencie skoku powinnam wpisać jakiś execute code przed albo po samej akcji skakania...I nie wiem, czy dodać tam jeszcze jakieś akcje? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mateusz Nejman Opublikowano 21 Stycznia 2015 Udostępnij Opublikowano 21 Stycznia 2015 Zobacz 13 punkt w FAQ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SockPuppet Opublikowano 22 Stycznia 2015 Autor Udostępnij Opublikowano 22 Stycznia 2015 Dziękuję. Wcześniej chyba przeoczyłam ten podpunkt. Te problemy już chyba rozwiązałam. Natomiast nurtuje mnie teraz jeszcze jedna kwestia - mianowicie zrobiłam sobie ruchome platformy - jeżdżą sobie w lewo i w prawo i teraz pytanie: co mam zrobić, żeby ludzik jeździł razem z platformą, a nie ześlizgiwał się z niej? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 22 Stycznia 2015 Udostępnij Opublikowano 22 Stycznia 2015 Platformę ruszasz za pomocą ustawiania jej zmiennych hspeed czy też dir razem ze speed. Czy po postu przesuwasz jej pozycję na sztywno modyfikując x? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SockPuppet Opublikowano 27 Stycznia 2015 Autor Udostępnij Opublikowano 27 Stycznia 2015 Platformy już załatwione. Teraz moim wielkim problemem jest animacja ludzika. Mam sobie kod, że powinien przebierać nogami w lewo, jak idzie w lewo, w prawo, jak idzie w prawo i nie przebierać, jak stoi. No i coś musiałam spaprać, bo on caaaały czas wygląda jakby chodził w lewo, nawet jak stoi, nawet, jak idzie w prawo. Kod wygląda tak: {if vspeed=0 sprite_index=ludzik_stand1 {if (keyboard_check(vk_left) and place_free(x-6,y)) {x-=6} sprite_index=ludzik_walk if (keyboard_check(vk_right) and place_free(x+6,y)) {x+=6} sprite_index=ludzik_walk2 if (keyboard_check(vk_up) and ! place_free(x,y+1) and vspeed=0) {vspeed-=10} image_speed=0.3; } if place_free(x,y+1) {gravity = 0.5} else {gravity = 0} } Co z nim jest nie tak? Jak mogę go poprawić? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 27 Stycznia 2015 Udostępnij Opublikowano 27 Stycznia 2015 Poprawnie robić klamry. One służą do oddzielania bloków kodu. Jeżeli wstawisz przed blokiem if (funkcję warunkową) to blok wykona się tylko gdy będzie spełniony warunek. W twoim wypadku kod odpowiadający za zmianę grafiki jest za każdym razem poza blokiem, a przez to zawsze się wykonuje i w efekcie brany pod uwagę jest tylko ostatnie wykonanie tego kodu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SockPuppet Opublikowano 28 Stycznia 2015 Autor Udostępnij Opublikowano 28 Stycznia 2015 Czyli jak to powinno wyglądać? Bo poprawiłam tak, żeby każdy ludzik był wewnątrz klamry razem z odpowiednim if, ale niczego to nie zmieniło! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 28 Stycznia 2015 Udostępnij Opublikowano 28 Stycznia 2015 Zwróć też uwagę na estetykę kodu, raz piszesz nawiasy po if a raz nie. Raz stawiasz średniki a raz nie. GML if ( vspeed == 0 ) sprite_index = ludzik_stand1; if ( keyboard_check(vk_left) and place_free(x-6,y) ) { x -= 6; sprite_index = ludzik_walk; } if ( keyboard_check(vk_right) and place_free(x+6,y) ) { x += 6; sprite_index = ludzik_walk2; } if ( keyboard_check(vk_up) and !place_free(x,y+1) and vspeed == 0 ) { vspeed -= 10; image_speed = 0.3; } if ( place_free(x,y+1) ) { gravity = 0.5; } else { gravity = 0; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SockPuppet Opublikowano 29 Stycznia 2015 Autor Udostępnij Opublikowano 29 Stycznia 2015 Dziękuję, teraz działa świetnie. Jest jeszcze jeden problem - ludzik działa pięknie, gdy zaczyna swój ruch od skoku, ale jeśli chce po prostu zacząć biec, to nie jest w stanie. Przebiera nóżkami w miejscu, a nie rusza, jakby podłoga go trzymała. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 29 Stycznia 2015 Udostępnij Opublikowano 29 Stycznia 2015 Przebiera nóżkami w miejscu, a nie rusza, jakby podłoga go trzymała. Bardzo dobra dedukcja. Właśnie to się dzieje. Teraz pytanie czy ja dobrze zrozumiałem. Jak ludzik chce iść to nie może, ale jak podskoczy i wyląduje to może już chodzić? Jeżeli tak to po prostu źle został umieszczony w edytorze room. Ale jeżeli po wylądowaniu też nie może chodzić (albo czasami tylko może) to wciąż jest błąd z kodem sprawdzającym kolizje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SockPuppet Opublikowano 29 Stycznia 2015 Autor Udostępnij Opublikowano 29 Stycznia 2015 Jak więc poprawić taką kolizję? Mój kod na kolizję wygląda: move_contact_solid(270,4) vspeed=0 Czy jest z nim coś nie w porządku? A tak w ogóle ludzik klei mi się do platform nie tylko od góry (OK), ale też od dołu i z boków platformy (źle) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 29 Stycznia 2015 Udostępnij Opublikowano 29 Stycznia 2015 Bardzo ciężko określić z czym jest problem. Tydzień temu zdarzyło mi się użyć tego samego zdania: "Wbrew pozorom zrobienie platformówki jest bardzo trudne". Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SockPuppet Opublikowano 30 Stycznia 2015 Autor Udostępnij Opublikowano 30 Stycznia 2015 Czyli nie wiadomo, jak to naprawić? Bo szukałam już we wszystkich możliwych opcjach i nadal nic. Czy taki problem jest wam znany? Co mogę jeszcze zrobić? Dodam, że kiedy stoi, to na powierzchni platformy, ale kiedy zaczyna bezradnie przebierać nóżkami żeby ruszyć, to tak jakby zachodzi na samą platformę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 30 Stycznia 2015 Administratorzy Udostępnij Opublikowano 30 Stycznia 2015 Wyłącz precyzyjne maski w sprite i sprawdź, czy rozmiary masek się zgadzają na sprite'ach i klatkach - bo tam, gdzie są nogi w ruchu mogą być krótsze, obiekt opada, a w kolejnej klatce zachodzi na obiekty :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 30 Stycznia 2015 Udostępnij Opublikowano 30 Stycznia 2015 Twój błąd może być z maskami. W create wstaw: GML mask_index=sprite_index , a w grafice postaci odznacz "Precise collision checking" Jak to nie pomoże to spróbuj tak jak pisałem 10 dni temu i dodaj GML move_outside_solid(90,0) Jak to też nie zadziała to prześlij mi w prywatnej wiadomości cały kod postaci i zobaczę co da się zrobić. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SockPuppet Opublikowano 30 Stycznia 2015 Autor Udostępnij Opublikowano 30 Stycznia 2015 Dziękuję! Zadziałało~ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 30 Stycznia 2015 Udostępnij Opublikowano 30 Stycznia 2015 Ale chcielibyśmy wiedzieć co pomogło. :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Lutego 2015 Administratorzy Udostępnij Opublikowano 1 Lutego 2015 Ja myślę, że chodziło jednak o maski i nogi przy precise. Sam się nadziałem na to kiedyś. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SockPuppet Opublikowano 4 Lutego 2015 Autor Udostępnij Opublikowano 4 Lutego 2015 Pomogło mask index równa się sprite index. Teraz mam kolejną zagwozdkę: chciałabym mieć platformę, na którą można by było wejść od spodu np. po drabinie, a od góry, żebym mogła na niej stać. Jak taką zrobić? Żeby przy wchodzeniu na nią od dołu nie była ~solidna~, a od góry była? Ach, i skoro mowa o drabinie - jak ją zrobić? Wiem, że strasznie marudzę, ale gdy próbuję korzystać z angielskich tutoriali, to zawsze coś idzie nie tak i ile bym nie próbowała, coś jest zawsze źle. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 4 Lutego 2015 Udostępnij Opublikowano 4 Lutego 2015 Ok, czyli pierwotnym problemem było to że maski miały różne rozmiary. :) A co do nowego pytania: Jest to bardzo trudne zagadnienie które można zrobić na wiele sposobów. Zazwyczaj unikam odsyłania ludzi do tutoriali na YT ale ten w tym wypadku się sprawdzi. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SockPuppet Opublikowano 26 Lutego 2015 Autor Udostępnij Opublikowano 26 Lutego 2015 Dziękuję. Tylko problemem okazuje się być to, że platformy...yyy...są "solidne" z dołu do góry", a przepuszczają z góry w dół, czyli się spada, a powinno być odwrotnie...Nie wiem, jak to odkręcić. W ogóle jak uzależnić daną akcję od tego, czy ludzik styka się z obiektem od góry czy od dołu? Jest na to jakiś kod? 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ę