Pogromca_kodu77 Opublikowano 25 Sierpnia 2020 Udostępnij Opublikowano 25 Sierpnia 2020 Cześć wszystkim, Próbuje stworzyć poziomą linę po której bohater przemieszcza się lewo prawo. Ten etap udało Mi się osiągnąć...lina działa idealnie na obiektach poziomych bez załamań łuków skosów itp. Jednak chciałbym aby ta lina działała mi również i głównie na linach łukowych i pod różnym kątem. Czy coś takiego bez włączania fizyki w gms 1.4 można osiągnąć? Ktoś byłby wstanie pomóc mi tak przerobić mój kod aby gracz mógł chodzić po takich linach? za wszelką pomoc wam dziękuję z góry.. a tu mój obecny kod liny.. wiadomo obj_gracz create lina = false; obj_gracz step //lina if place_meeting(x,y,obj_lina) && place_meeting(x,y,obj_lina) && place_meeting(x,y-125,obj_lina) && czas <= 0 && (key_check(key.left) || key_check(key.right) && wPowietrzu) { lina = true; vspd = 0; hspd = 0; } //Chodzenie po linie if lina == true { var __hsign = keyboard_check(vk_right)-keyboard_check(vk_left); hspd = min(max(hspd+__hsign*2,-4),4); if __hsign == -1 && !place_meeting(x-40,y,obj_lina) { lina = false; hspd = -1; } if __hsign == 1 && !place_meeting(x+40,y,obj_lina) { lina = false; hspd = 1; } if __hsign != 0 { image_xscale = __hsign; } if __hsign == -1 && !wPowietrzu { lina = false; } if !place_meeting(x,y,obj_lina) || !place_meeting(x,y-125,obj_lina) { lina = false; } } obj_gracz step 2 if lina == true { if x == xprevious && y == yprevious { if sprite_index != spr_bohater_wisinalinie { sprite_index = spr_bohater_wisinalinie; } } else { if sprite_index != spr_bohater_lina { sprite_index = spr_bohater_lina; } } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 25 Sierpnia 2020 Administratorzy Udostępnij Opublikowano 25 Sierpnia 2020 Ale ta lina ma się pod bohaterem bujać? Jeśli nie, to jest zwykłe wchodzenie pod górkę, jeśli tak... no to jest już skomplikowana sprawa i co prawda widziałem takie rzeczy (inverse kinematics), ale nie wiem czy to wyjdzie tak jak chcesz: https://marketplace.yoyogames.com/assets/6157/inverse-kinematics Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pogromca_kodu77 Opublikowano 26 Sierpnia 2020 Autor Udostępnij Opublikowano 26 Sierpnia 2020 Mam tu na myśli wspinaczkę po takich linach.Czyli chwyta się rękami takiej liny i przemieszcza lewo i w prawo.Bohater nie będzie chodził po nich tylko i wyłącznie wspinał się. Rozumiem jak wspomniałeś,że jest to zwykłe wchodzenie pod górkę... Tylko problem polega na tym jak zmusić bohatera żeby wspinał się po takich linach w kształcie paraboli? No i co najważniejsze żeby z nich nie spadł. Mam w powyższym kodzie obiekt niewidoczny obj_lina w postaci kwadratu który rościągam i nakładam na interesujący mnie obiekt na scenerii czyli na linę w kształcie paraboli,a po niej chodzi bohater.Co prawda kąt jego można zmienić ale i tak bohater spada z liny w kształcie paraboli.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 26 Sierpnia 2020 Administratorzy Udostępnij Opublikowano 26 Sierpnia 2020 Ciężko coś powiedzieć nie widząc kodu, ale to generalnie jest cieżkie zagadnienie. Chodzi o coś takiego jak w wormsach? Trzeba by użyć tego co powyżej, zapamiętywać jakie są fragmenty liny przed/po obecnym, robić interpolację liniową na kolejnych fragmentach (wyliczyć ile procentowo liny się przeszło) i jak dojdziesz do 0% lub 100% przeskakiwać na kolejny fragment, oraz na tej podstawie wyliczać x/y gracza. Generalnie wiec, wchodząc na linę najlepiej byłoby w ogóle niszczyć obiekt gracza i tak naprawdę sterować między wartością 0% a 100% progresją przejścia tej liny, a bohatera tylko rysować (jeśli jest na obecnym segmencie). Jak dojdzie do któregoś z końców to znów go utworzyć jako obiekt. Gracz i tak widzi to co jest rysowane, więc nie ma znaczenia zniknięcie obiektu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pogromca_kodu77 Opublikowano 26 Sierpnia 2020 Autor Udostępnij Opublikowano 26 Sierpnia 2020 Nie nie..w Wormsach mamy coś takiego,że robak wypuszcza linę i ta lina chwyta się skały razem z Robakiem. Tu ja mam już narysowaną linę i na nią nakładam niewidoczny obiekt sprite..w postaci kwadratu rozciągam go i po tym wspina sięi bohater..dając wrażenie jakby wspinał się po linie To działa dobrze na linie prostej poziomej..ale jak wspomniałem problem jest z liną łamaną a nie wspomnę jak już namalowałbym parabolę.. Te liny nie muszą się ruszać,bo to za dużo zabawy..istotne jest to,żeby gracz mógł spokojnie wspinać się po nich lewo prawo...o coś takiego mi chodzi.. Co do kodu liny jest wyżej w moim poście.. Może przydałby się też ruch Y dla zakrzywionych linii lub kabli itp obiektów podobnych wtedy mamy potencjalną kolizję z 4 stron gracza aby nie spadł musi zmienić kierunek aby pozostać na linie/przewodzie... Tu też Gnysek ma ciekawe rozwiązanie z interpolacją liniową. Ktoś byłby wstanie coś z was takiego dla mnie zrobić?wykorzystując np mój kod wyżej z tego postu? Moje pomysły się wyczerpały...nie mam takich zaawansowanych umiejętności. Bardzo dziękuję za każdą możliwą pomoc. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 26 Sierpnia 2020 Udostępnij Opublikowano 26 Sierpnia 2020 Ja bym to zrobił podobnie jak to @gnysek zaproponował, ale zamiast procentowego wskaźnika, to trzymał długości segmentów, oraz nie usuwał obiektu gracza, a w nim sterował poruszanie się po linie. np. przypuśćmy, że mamy taką linę: Można podzielić ją na segmenty, np. ręcznie powstawiaj punkty, np. w kodzie i wtedy będziesz miał listę punktów z której możesz policzyć długość każdego segmentu. Teraz najciekawsza rzecz - żeby pozwolić graczowi "złapać" linę, musisz policzyć jak daleko od najbliższego segmentu jest gracz. W pętli for dla każdego segmentu sprawdzaj, jak daleko gracz jest od liny. Jeżeli będzie odpowiednio blisko, to przypisz graczowi poprzez zmienną, do której liny należy, oraz na którym segmencie "zaczął się wspinać". Możesz przerobić ten skrypt https://www.gmlscripts.com/script/point_line_distance tylko wyciągnij z niego dwie wartości jak odległość i zmienną t, bo przyda Ci się do obliczenia jak daleko na tym segmencie jest gracz. A sama wspinaczka to co Step Event musisz ustawić gracza na odpowiedni segment linii. Np. jeżeli masz w graczu zapisaną wartość 120, to znajdujesz na którym segmencie jest gracz np. w pętli for i następnie liczysz wektor normalny z dwóch punktów tego segmentu i mnożysz przez różnicę (120 - [długość całkowita do punktu startowego segmentu na którym jest gracz]) a na koniec dodajesz wartości współrzędnych punktu startowego tego segmentu. Samo sterowanie poruszania się po linie to modyfikacja zapisanej zmiennej, możesz też tę wartość clamp-ować, żeby nie wylazł Ci poza linę. PS. pamiętaj, że złożoność tego rozwiązania to O(n), im mniej segmentów, tym lepiej Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pogromca_kodu77 Opublikowano 26 Sierpnia 2020 Autor Udostępnij Opublikowano 26 Sierpnia 2020 Konrad-GM Bardzo fajnie to zademonstrowałeś na powyższych rysunkach;-) właśnie coś takiego mam na myśli;-) Szczerze...trochę mnie to przeraża;-) jak mam to ogarnąć... łatwe rzeczy nie ma problemów,ale jak przychodzi takie wyzwanie to ręce opadają.. Skrypt nie jest duży..a mógłbyś zmontować dla mnie działający przykład takiego ruchu? może być z użyciem tego rysunkowego przykładu...pod gms 1.4 Na górze jest mój kod od liny... Będzie łatwiej mi się z tym zaznajomić i przeanalizować..Ja już sobie to poskładam w swoim kodzie gry. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pogromca_kodu77 Opublikowano 26 Sierpnia 2020 Autor Udostępnij Opublikowano 26 Sierpnia 2020 :-) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 26 Sierpnia 2020 Administratorzy Udostępnij Opublikowano 26 Sierpnia 2020 7 godzin temu, Pogromca_kodu77 napisał: .trochę mnie to przeraża;-) jak mam to ogarnąć... Bo to nie jest prosta sprawa, dlatego piszemy ogólnikami. Nawet nam zajęłoby to pewnie cały dzień roboty. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pogromca_kodu77 Opublikowano 27 Sierpnia 2020 Autor Udostępnij Opublikowano 27 Sierpnia 2020 Rozumiem...zagadnienie nie jest proste. I wymaga sporej wiedzy programistycznej. Sam próbuje to rozwiązać od pewnego czasu. Może inaczej..ktoś jest wstanie odpłatnie coś takiego wykonać? Bazując na moim silniku gry...?? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 27 Sierpnia 2020 Administratorzy Udostępnij Opublikowano 27 Sierpnia 2020 Ja bym sobie ręki nie dał uciąć, że efekty będą zadowalające Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pogromca_kodu77 Opublikowano 27 Sierpnia 2020 Autor Udostępnij Opublikowano 27 Sierpnia 2020 Gnysek bezpiecznie by było żebyś nie dawał sobie ręki obcinać,a co najwyżej paznokieć duży od lewej stopy;-) Obstawiam,że na pewno byłyby efekty zadowalające;-) kwestia dogadania ceny no i same chęci;-) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 27 Sierpnia 2020 Udostępnij Opublikowano 27 Sierpnia 2020 Nie korzystam z GMa już od dłuższego czasu tak naprawdę, ale może spróbuj pobawić się substytutem jak GMowy path, znalazłem nawet jakieś tutoriale. Bazując na nich chyba załapiesz jak można to też rozwiązać, co prawda dalej będziesz musiał policzyć odległość od tych segmentów żeby postać mogła "złapać" linę (chyba, że GM potrafi znaleźć najbliższy punkt funkcjami path )https://youtu.be/OkUMpnvxS1shttps://youtu.be/fOL_VYzwDcE Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pogromca_kodu77 Opublikowano 27 Sierpnia 2020 Autor Udostępnij Opublikowano 27 Sierpnia 2020 Kiedyś używałem path do ruchomych platform;-) potrzebowałem wind..i to całkiem nieźle działało, ale nie wiem czy sobie z tym poradzę;-) to dość złożone zagadnienie... Jak coś to mogę wczesny projekt gry podesłać w gms 1,4;-) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 27 Sierpnia 2020 Udostępnij Opublikowano 27 Sierpnia 2020 Jak chcesz za to komuś zapłacić to szukaj najlepiej na https://www.fiverr.com/ albo https://www.upwork.com/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 27 Sierpnia 2020 Administratorzy Udostępnij Opublikowano 27 Sierpnia 2020 Gdybym powiedział ile za godzinę, to byś nie chciał Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pogromca_kodu77 Opublikowano 27 Sierpnia 2020 Autor Udostępnij Opublikowano 27 Sierpnia 2020 Wiesz...jakbym powiedział ile biorę za zbudowanie prostej sieci komputerowej to też mogłaby cena zwalić z nóg:-)wszystko zależy dla kogo:-) gnysek 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pogromca_kodu77 Opublikowano 28 Sierpnia 2020 Autor Udostępnij Opublikowano 28 Sierpnia 2020 Dogadałem się z gościem z yoyogames. Za 40$ zrobi mi te wszystkie liny plus pionowe liny plus fizyka plus ruchome mosty i obiekty ruchome na wodzie:-) także cena 150 ponad zł całkiem rozsądna. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 31 Sierpnia 2020 Administratorzy Udostępnij Opublikowano 31 Sierpnia 2020 Z yoyogames, czy z forum yoyogames ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pogromca_kodu77 Opublikowano 31 Sierpnia 2020 Autor Udostępnij Opublikowano 31 Sierpnia 2020 Z forum yoyogames :-) W dodatku z Nowej Zelandii Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 31 Sierpnia 2020 Administratorzy Udostępnij Opublikowano 31 Sierpnia 2020 No jestem ciekaw efektów, tutaj nikt nie był odważny się za to zabierać Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pogromca_kodu77 Opublikowano 1 Września 2020 Autor Udostępnij Opublikowano 1 Września 2020 Nie ma problemu chłopaki..na pewno to potem zademonstruje tutaj w swoim demku pokazowym gry;-) Poprosiłem faceta żeby mi to szczegółowo w kodzie w komentarzach opisał...sam jestem ciekaw efektu końcowego. mam takie pytanie do was...wiem,że to błahostka..ale opiszę w skrócie o co mi chodzi.. W grze mój sprite bohatera zaczyna grę obrócony w prawą stronę w lewej części ekranu czy to na górze lub na dole...ale mam też kilka plansz,gdzie gracz zaczyna w prawym dolnym rogu lub w prawym górnym rogu przygodę i chciałbym żeby wtedy zaczynał ta plansze odwrócony w lewą stronę... Wiadomo,że to jest czasowe,bo takich plansz tylko kilka jest u mnie w grze gdzie gracz powinien zaczynać planszę odwrócony w lewą stronę. Jak to zrobić? dodać jakiś warunek w danym pokoju? jakiś przykład? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 1 Września 2020 Udostępnij Opublikowano 1 Września 2020 W room edytorze zmienić mu skalę na -1. I od takich drobnych pytań mamy specjalny temat: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pogromca_kodu77 Opublikowano 1 Września 2020 Autor Udostępnij Opublikowano 1 Września 2020 Dzięki..ale to akurat wiem... Mi bardziej chodziło o to,że gracz jak zaczyna planszę z prawej strony ekranu to jego sprite jest odwrócony w lewo i jak zaczyna grę z lewej strony ekranu planszy to jego sprite jest odwrócony w prawo;-) Już to ogarnąłem... Stworzyłem coś takiego,może komuś się przyda z forumowiczów... obj_bohater create //Ustaw kierunek patrzenia twarz = dir_lewo //Sprawdzanie pozycji gracza if (obj_bohater.x > room_width - 100) {twarz = dir_prawo} dir_dol= 270 dir_gora = 90 dir_lewo = 180 dir_prawo = 0 obj_bohater draw if (twarz = dir_prawo) {image_xscale = -1} Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Września 2020 Administratorzy Udostępnij Opublikowano 1 Września 2020 ja bym z tych dir_xxx zrobił enum lub #macro, to by można używać w kazdym obiekcie, ostatnio doceniłem sobie taką opcję (nazwałem po je prostu left/right/up/down). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pogromca_kodu77 Opublikowano 2 Września 2020 Autor Udostępnij Opublikowano 2 Września 2020 Słuszna uwaga Gnysek..na enum można by było to bardziej czytelniej napisać.. Ja dopiero się uczę tego wszystkiego;-) wiem wiem ify ktoś może powiedzieć,że to same zło;-) 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ę