Skocz do zawartości

Balans jak w Tony Hawk


Gromojar

Rekomendowane odpowiedzi

Witam, chciałbym zrobić takie łapanie równowagi, jak w grze Tony Hawk Pro Skater, wiecie o co mi chodzi. Te podczas grindu :P

Niestety nawet nie wiem, jak się do tego zabrać, a na forum nic nie znalazłem.

 

Mógłby ktoś poratować jakimś przykładem?

 

Z góry dzięki

Pozdrawiam, Gromojar

Odnośnik do komentarza
Udostępnij na innych stronach

Potrzeba Ci 2 zmiennych które będą to kontrolować.

Pierwsza to będzie pozycja wskaźnika na... nazwijmy to równoważni. Sama równoważnia będzie w zakresie <-100;100>, czyli wskaźnik trzeba utrzymać pomiędzy -100 a 100.

Drugą zmienną będzie siła wskaźnika. Jeżeli wskaźnik zbliża się do końca równoważni to nabiera rozpędu, a jeżeli naciśniemy strzałki w drugą stronę to powoli go wyhamowujemy.

GML
t+=1//Zmienna która stale rośnie, odpowiada za czas

_sila+=sin(t/1000)//Co step dodajemy do siły troszkę sinusa żeby było trochę dynamiki

_sila+min(0.9,abs(_wskaźnik/100))*sign(_wskaźnik)

/*

abs() jest po to aby pozbyć się minusa

mnożenie przez sign() jest po to aby przywrócić minus

Minusa pozbywamy się tylko na chwilę aby móc poprawnie wykonać funkcję min() która zapewnia żeby moc spadania nie była większa od 1.9 (po zsumowaniu z minusem) dzięki temu zawsze będzie można się uratować ruchami klawiatury:

*/

if(keyboard_key(vk_left))

{

_sila-=2

}

if(keyboard_key(vk_right))

{

_sila+=2

}

_wskaznik+=_sila//przesunięcie wskaźnika

if(_wskaznik<-100 or _wskaznik>100)

{

//Skucha

}

 

Przykładu nie sprawdzałem i pisałem z głowy. Wszystko powinno być ok, ale musisz się pobawić liczbami. Ogółem to wprowadziłbym trzecią zmienną która odpowiadałaby za wzrost trudności.

Odnośnik do komentarza
Udostępnij na innych stronach

Dziękuję za odpowiedź, niestety jestem trochę zielony w GML, i nie bardzo wiem jak to wszystko poustawiać.

Rozumiem, że powyższy kod wklepujemy w step obiektu wskaźnik? I jak zrobić, by sprite "pochylał się" wraz ze wskaźnikiem równowagi?

 

O dużo pytam, ale postawiłem sobie ciężkie zadanie, które jest chyba nie na moje siły, a już tak mam, że jak coś zacznę, to muszę skończyć :D

 

Dzięki za pomoc, i czekam na dalsze wskazówki :)

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki za odpowiedzi, teraz znowu mam taki problem, po poradzeniu sobie z problemem przy keyboard_check, mam coś takiego

"COMPILATION ERROR in code action

Error in code at line 4:

_sila+min(0.9,abs(_wskaznik/100))*sign(_wskaznik)

^

at position 7: Assignment operator expected.

"

Odnośnik do komentarza
Udostępnij na innych stronach

Ok, teraz jak w Create wstawiłem:

GML
t=0;

_sila=0;

_wskaznik=0;

to gra się uruchomiła.

Teraz moje KOLEJNE pytanie:

Nie ma może jakiegoś przykładu, który by obrazował całą tą równoważnie? Bo co z tego, że gra się uruchamia, skoro nie widzę efektu? (Po przytrzymaniu któregoś z przycisków pokazuje mi się tylko message "przegrałeś", co wcześniej ustawiłem)

Tak czy siak BARDZO dziękuję za pomoc, i wiem, że stawiam sobie bardzo ciężkie zadanie, które po tylu latach przerwy w GML jest dla mnie aż nadto przewalone :)

Odnośnik do komentarza
Udostępnij na innych stronach

Już sobie poradziłem, ale mam pytanie:

Co decyduje o środku równoważni? W sensie kiedy ustawiłem granice wskaźnika na 0, i 2000 ( tak przykładowo ), to kuleczka wskaźnika leci wyłącznie

na prawo. Nawet gdy przycisnę ją prawie do końca, to powoli zaczyna rozpędzać się w prawo. Jak zmienić owy środek?

 

 

 

~~

Poradziłem sobie, dziękuje wszystkim za pomoc ! :))

Odnośnik do komentarza
Udostępnij na innych stronach

Nie możesz ustawić granic 0 i 2000 musisz zrobić -1000 i 1000, bo siła wskaźnika zależy też o jego pozycji. Jak będzie na plusie to będzie go ciągnąć w prawo. Robiąc 0 i 2000 nigdy nie będzie na minusie, a na minusie znosi na lewo.

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...