Gracz porusza się w górę, czy skacze czy wspina się?


11

W grze platformowej opartej na fizyce 2D, w której znajdują się drabiny, w jaki sposób określasz, czy gracz poruszający się w górę jest spowodowany skokiem czy wspinaniem się po drabinie, tak abyś wiedział, w jaką animację grać?

I ogólnie rzecz biorąc, oczywiście wektor kierunku nie jest wystarczający, aby określić animację do odtworzenia: w jaki sposób określasz również przyczynę ruchu (tak, że znasz właściwy duszek)?


1
Jeśli gracz jest na drabinie, czy naprawdę jest w powietrzu?
Derek

Odpowiedzi:


15

Regularnie mam problem z logiką osobistą, który wydaje się tutaj wyrażać. Czasami patrzysz całkowicie na logikę i programowanie z niewłaściwego kierunku. W tym przypadku wydaje się, że nie zdajesz sobie sprawy, że od samego początku wiesz, co się dzieje, z powodu kodu logicznego. Powinieneś już wiedzieć, mówiąc programowo, czy jest na drabinie, czy nie.

Pomyśl o tym (jak powiedziałem, często mam ten problem). Logika gier powinna wiedzieć, że jesteś na drabinie, zakładając, że jesteś mądrym programistą. Dla lepszego wyjaśnienia mam typ archiwum plików i zmarnowałem około godziny dziennie, próbując dowiedzieć się, jak uzyskać rozmiar danych i nigdy nie przestałem myśleć, że po załadowaniu pliku teraz znać jego rozmiar: P.

Powodem, dla którego odnosi się to wyłącznie, jest to, że patrzysz na to jako „Teraz, gdy jestem w powietrzu, jak mogę dowiedzieć się, czy jestem na drabinie lub skaczę?” ... Kiedy naprawdę powinieneś pomyśl: „Mam zamiar wznieść się w powietrze, ale metodą PIERWSZĄ, abym mógł go użyć do animacji”.


Proste, np .: OnJump()zmień wartość jumpinglogiczną na prawdę, a jeśli jesteś w powietrzu i jumpingjest fałszywy, to albo upadasz, albo jesteś na drabinie itp.
Joshua Hedges

6

System fizyki nie wie ani nie dba o to, dlaczego gracz porusza się w określonym kierunku. To twoja gra spowodowała, że ​​system fizyki poruszył gracza w ten sposób, a zatem Twoim obowiązkiem jest śledzenie tego. Gracz powinien mieć na sobie jakiś stan, który powie, czy skacze, wspina się, biega itp. Nie powinieneś próbować rozgryzać tego na podstawie tego, co stało się z systemem fizyki.


2

Wydaje się, że cokolwiek wydarzenie, które zostanie wywołane podczas kolizji, która ustawia prędkość pionową gracza, może być również użyte do ustawienia flagi określającej, jakiej animacji użyć.

Jeśli korzystasz z biblioteki innej firmy, która jest zbyt restrykcyjna w stosunku do podanych informacji, możliwe będzie otoczenie drabiny prostokątem, a jeśli gracz porusza się w górę i znajduje się w tym prostokącie, wykonaj animację wspinania.


To faktycznie podnosi dobrą kwestię, którą zamierzałem zająć się później przy tworzeniu własnych gier, i to jest sposób na zmianę szybkości animacji opartej na fizyce. Mam postacie, które chcę wymachiwać rękoma proceduralnie, szybciej w zależności od tego, jak szybko spadają. I nigdy nie myślałem o dobrym sposobie zrobienia tego dogłębnie (myślałem z czasem), ale twój pomysł na prędkość jest znacznie lepszy. +1 za ogólną użyteczną odpowiedź, która nie jest specyficzna tylko dla jego przypadku.
Joshua Hedges,

1

Podczas ustawiania prędkości skoku ustaw również stan znaków na STATE_JUMPING. Robiąc to, zawsze wiesz, w jakim stanie jest gracz, i możesz odpowiednio działać, sprawdzając stan graczy.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.