Krowek
-
Postów
7 -
Dołączył
-
Ostatnia wizyta
Typ zawartości
Profile
Forum
Wydarzenia
Odpowiedzi opublikowane przez Krowek
-
-
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ę.
-
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ść.
-
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.
-
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:
GMLismoving = 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:
GMLif (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:
-
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.
-
1. Jak zablokować poruszanie się po skosie?
2.Gdy wcisnę klawisze poruszania się np. W+D moja postać zaczyna się obracać - jak to naprawić?
GMLismoving = 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.
ds_listowy boulderdash
w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Opublikowano
assety sa kupione i stworzone indywidualnie