Krowek Opublikowano 17 Września 2015 Udostępnij Opublikowano 17 Września 2015 1. Jak zablokować poruszanie się po skosie? 2.Gdy wcisnę klawisze poruszania się np. W+D moja postać zaczyna się obracać - jak to naprawić? GML ismoving = false; if(keyboard_check(ord("A"))) { sprite_index = spr_Player_Left; ismoving = true; image_speed=0.1; phy_position_x -= move_speed; ismoving= true; } if(keyboard_check(ord("D"))){ sprite_index = spr_Player_Right; ismoving = true; image_speed=0.1; phy_position_x += move_speed; } if(keyboard_check(ord("W"))){ sprite_index = spr_Player_Up; ismoving = true; image_speed=0.1; phy_position_y -= move_speed; } if(keyboard_check(ord("S"))){ sprite_index = spr_Player_Down; ismoving = true; image_speed=0.1; phy_position_y += move_speed; } if(!ismoving){ image_speed = 0; image_index = 1; } 3. Jak dodać grawitacje do obiektu lub wyłączyć tylko postaci, a pozostałe obiekty na mapie ja posiadały? (Grawitacja tylko w osi Y) Z góry dziękuję za pomoc. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 17 Września 2015 Udostępnij Opublikowano 17 Września 2015 1. Jak zablokować poruszanie się po skosie? 2.Gdy wcisnę klawisze poruszania się np. W+D moja postać zaczyna się obracać - jak to naprawić? 3. Jak dodać grawitacje do obiektu lub wyłączyć tylko postaci, a pozostałe obiekty na mapie ja posiadały? (Grawitacja tylko w osi Y) Z góry dziękuję za pomoc. 1 i 2 - zamień tę serię warunków na switch 3. Jeśli pracujesz na obiektach (rozumiem że tak robisz) to każdy z nich może mieć przypisaną grawitację, na przykład o wartości zero, to wtedy wykona się ruch o zero. Proponowana wartość dla inkrementalnej grawitacji to -1 wtedy obiekty spadają o pixel i najwyżej są odpychane z powrotem (będą drżały jak się im przyjrzysz, robi się jeszcze jedną pętlę która ten flicking kasuje). W grawitacji inkrementalnej -- w normalnych warunkach arcade nie uzyskasz prędkości przelatywania przez obiekty, wystarczy głęboka podłoga. To NESowa fizyka Mario. Lub kwadratowej -2 gdzie *sign(-1) (bo -1 generalnie mało efektywnie się pomnaża), i trzeba wprowadzić prędkość graniczną mniejszą niż głębokość próbkowanego kafla podłogi (bo jak Ci się coś rozpędzi to będzie próbkowało głęboko pod ziemią i przeleci przez podłogę( no chyba że robisz próbkowanie liniowe. Ta opcja wymaga oczywiście potrzeby i pewnego rozeznania co tu jeszcze można sss. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Krowek Opublikowano 17 Września 2015 Autor Udostępnij Opublikowano 17 Września 2015 1 i 2 - zamień tę serię warunków na switch 3. Jeśli pracujesz na obiektach (rozumiem że tak robisz) to każdy z nich może mieć przypisaną grawitację, na przykład o wartości zero, to wtedy wykona się ruch o zero. Proponowana wartość dla inkrementalnej grawitacji to -1 wtedy obiekty spadają o pixel i najwyżej są odpychane z powrotem (będą drżały jak się im przyjrzysz, robi się jeszcze jedną pętlę która ten flicking kasuje). W grawitacji inkrementalnej -- w normalnych warunkach arcade nie uzyskasz prędkości przelatywania przez obiekty, wystarczy głęboka podłoga. To NESowa fizyka Mario. Lub kwadratowej -2 gdzie *sign(-1) (bo -1 generalnie mało efektywnie się pomnaża), i trzeba wprowadzić prędkość graniczną mniejszą niż głębokość próbkowanego kafla podłogi (bo jak Ci się coś rozpędzi to będzie próbkowało głęboko pod ziemią i przeleci przez podłogę( no chyba że robisz próbkowanie liniowe. Ta opcja wymaga oczywiście potrzeby i pewnego rozeznania co tu jeszcze można sss. Dzięki za pomoc zmienił sterowanie na switch-e. Lecz z ta grawitacja to nie za bardzo wiem jak zrobić. Mój projekt room (nie posiada grawitacji) i sterowaniem przypomina 2d rpg i na mapie znajdują się obiekty które gracz przesuwa (skrzynki), jeżeli gracz przesunie skrzynkę do przepaści skrzynka ma spaść do momentu aż na potka obiekt z którym koliduje. Moje skrzynki się przesuwają ale nie spadają. Gdy wchodzą w kolizje z obiektem to nie wiem czemu wchodzą pod kolejny obiekt (nakładanie się textur). Gdy gracz lub skrzynka wchodzi w kolizje z jakimś obiektem to się obraca. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 17 Września 2015 Udostępnij Opublikowano 17 Września 2015 Dzięki za pomoc zmienił sterowanie na switch-e. Lecz z ta grawitacja to nie za bardzo wiem jak zrobić. Mój projekt room (nie posiada grawitacji) i sterowaniem przypomina 2d rpg i na mapie znajdują się obiekty które gracz przesuwa (skrzynki), jeżeli gracz przesunie skrzynkę do przepaści skrzynka ma spaść do momentu aż na potka obiekt z którym koliduje. Moje skrzynki się przesuwają ale nie spadają. Gdy wchodzą w kolizje z obiektem to nie wiem czemu wchodzą pod kolejny obiekt (nakładanie się textur). Gdy gracz lub skrzynka wchodzi w kolizje z jakimś obiektem to się obraca. 2d rpg to takie japońskie czy takie platformowe? Jak platformowe to sprawdzasz kolizję z obiektem ale kładziesz od podłoża, więc się nakładają licząc od podłogi. Skrzynka na podłodze musi przejmować właściwość podłogi i texturę skrzynki. A obracają się bo masz kolizje z rewersem (cofającą z punktu kolizji) z dziedziczeniem znaku tyle że sign() algebry nad ciałem liczb rzeczywistych nie jest symetryczny, trzeba go wyciągać z funkcji i przydawać po przeliczeniu (dlatego istnieje funkcja sign()). //nie jestem pewien czy to skumasz, postać ma inne sterowanie w lewo i wprawo ponieważ zrobiłeś - i + speed. Powinno być speed i direction, wtedy unikasz znaku (masz sign(+)). Teraz jeśli ciśniesz klawisza w prawo i trafiasz na przeszkodę to Ci cofa i obraca postać, ale klawisza ciśniesz więc ją obraca znowu, trafia na ścianę i robi się pralka; często w takim sterowaniu w lewo po prostu się zatrzymują na przeszkodach, dlatego stare gry szły z lewa w prawo, oszczędzało się na kodzie^^ Jeśli skrzynie wchodzą jedne pod drugie to musisz albo im zliczać kolizje i przenieść łańcuchem na postać (żeby nie pchał), albo dodać im bezwładność (i masę). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Krowek Opublikowano 18 Września 2015 Autor Udostępnij Opublikowano 18 Września 2015 2d rpg to takie japońskie czy takie platformowe? Jak platformowe to sprawdzasz kolizję z obiektem ale kładziesz od podłoża, więc się nakładają licząc od podłogi. Skrzynka na podłodze musi przejmować właściwość podłogi i texturę skrzynki. A obracają się bo masz kolizje z rewersem (cofającą z punktu kolizji) z dziedziczeniem znaku tyle że sign() algebry nad ciałem liczb rzeczywistych nie jest symetryczny, trzeba go wyciągać z funkcji i przydawać po przeliczeniu (dlatego istnieje funkcja sign()). //nie jestem pewien czy to skumasz, postać ma inne sterowanie w lewo i wprawo ponieważ zrobiłeś - i + speed. Powinno być speed i direction, wtedy unikasz znaku (masz sign(+)). Teraz jeśli ciśniesz klawisza w prawo i trafiasz na przeszkodę to Ci cofa i obraca postać, ale klawisza ciśniesz więc ją obraca znowu, trafia na ścianę i robi się pralka; często w takim sterowaniu w lewo po prostu się zatrzymują na przeszkodach, dlatego stare gry szły z lewa w prawo, oszczędzało się na kodzie^^ Jeśli skrzynie wchodzą jedne pod drugie to musisz albo im zliczać kolizje i przenieść łańcuchem na postać (żeby nie pchał), albo dodać im bezwładność (i masę). W chwili obecnej mam taki skrypt na poruszanie postaci: GML ismoving = false; { switch (keyboard_key) { case vk_left: case ord("A"): sprite_index = spr_Player_Left; phy_position_x -= move_speed; image_speed=0.1; ismoving= true; break; case vk_right: case ord("D"): sprite_index = spr_Player_Right; phy_position_x += move_speed; image_speed=0.1; ismoving= true; break; case vk_up: case ord("W"): sprite_index = spr_Player_Up; phy_position_y -= move_speed; image_speed=0.1; ismoving= true; break; case vk_down: case ord("S"): sprite_index = spr_Player_Down; phy_position_y += move_speed; image_speed=0.1; ismoving= true; break; } } if(!ismoving){ image_speed = 0; image_index = 1; } Zaś Step skrzyni, aby się przesuwała: GML if (place_meeting(x,y,obj_Player && keyboard_check('D'))) { phy_position_x += move_speed; (direction_x = move_speed?) ismoving = false; } if (place_meeting(x,y,obj_Player && keyboard_check('A'))) { phy_position_x -= move_speed; ismoving = false; } Mógłbyś mi przetworzyć mój skrypt bo zbytnio nie wiem o co ci chodzi. I bardziej wytłumaczyć jak naprawić nachodzenie się textur przesuwnych obiektów. Moje ustawienia dla obiektu: Problem: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 18 Września 2015 Udostępnij Opublikowano 18 Września 2015 Dodaj place meeting również w kolizjach między skrzyniami. Bo na razie tylko gracz przestawia, tylko jedną skrzynię, dlatego siebie nie odpychają. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Krowek Opublikowano 18 Września 2015 Autor Udostępnij Opublikowano 18 Września 2015 Dodaj place meeting również w kolizjach między skrzyniami. Bo na razie tylko gracz przestawia, tylko jedną skrzynię, dlatego siebie nie odpychają. Własnie gracz ma przesuwać tylko jedna. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 18 Września 2015 Udostępnij Opublikowano 18 Września 2015 Własnie gracz ma przesuwać tylko jedna. Ale problemem jest to że wpycha jedną w miejsce drugiej, bo skrzynie nie testują wzajemnej zajętości. Jeśli gracz pcha skrzynię, to skrzynia sprawdza czy inna skrzynia... i tworzysz łańcuch lub macierz korelacji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Krowek Opublikowano 18 Września 2015 Autor Udostępnij Opublikowano 18 Września 2015 Ale problemem jest to że wpycha jedną w miejsce drugiej, bo skrzynie nie testują wzajemnej zajętości. Jeśli gracz pcha skrzynię, to skrzynia sprawdza czy inna skrzynia... i tworzysz łańcuch lub macierz korelacji. A jak się pozbyć dalej efektu odbijania postaci? Już próbowałem po przez zwiększenie dampingu ale i tak gdy postać uderzy o róg obiektu to się obróci. Może by zrobić co by mi nawet pasowało żeby postać się poruszała o wielkość siatki textury ( w moim przypadku 128x128) tylko w tedy postać strasznie szybko się porusza i nie wiem jak dodać prędkość. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 18 Września 2015 Udostępnij Opublikowano 18 Września 2015 A jak się pozbyć dalej efektu odbijania postaci? Już próbowałem po przez zwiększenie dampingu ale i tak gdy postać uderzy o róg obiektu to się obróci. Może by zrobić co by mi nawet pasowało żeby postać się poruszała o wielkość siatki textury ( w moim przypadku 128x128) tylko w tedy postać strasznie szybko się porusza i nie wiem jak dodać prędkość. Z odbijaniem to nie wiem jaki masz kod ale podejrzewam że testujesz zajętość i zwracasz cofkę ruchu z odwróceniem znaku. Poszukaj polecenia potential step czy coś w ten deseń się to nazywało... place_meeting(x, y, ob); To to chyba. Testuje, robi cofkę bez zmian i odpowiada czy ignorować dalszy ruch czy nie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Krowek Opublikowano 19 Września 2015 Autor Udostępnij Opublikowano 19 Września 2015 Z odbijaniem to nie wiem jaki masz kod ale podejrzewam że testujesz zajętość i zwracasz cofkę ruchu z odwróceniem znaku. Poszukaj polecenia potential step czy coś w ten deseń się to nazywało... place_meeting(x, y, ob); To to chyba. Testuje, robi cofkę bez zmian i odpowiada czy ignorować dalszy ruch czy nie. Mógłbym ci przesłać fragment mojego projektu to może byś coś zaradził na okręcanie się przy tych kolizjach? Już tydzień nad tym siedzę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 19 Września 2015 Udostępnij Opublikowano 19 Września 2015 Mógłbym ci przesłać fragment mojego projektu to może byś coś zaradził na okręcanie się przy tych kolizjach? Już tydzień nad tym siedzę. Możesz przesłać cały, dużo się przy nim nauczysz i za tydzień czy dwa zaczniesz nowy na bazie tego co się nauczyłeś. Od razu Ci podpowiadam, że popełniłeś w założeniach takie rzeczy, że na nie nawet garść uspokajaczy nie pomoże jak zaczniesz rozwijać projekt i na nie kląć :) Ale każdy tak robi na początku po przejściu z ikonek, więc się nie stresuj. Nintendo te tak robiło dawno temu :) 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ę