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)?
physics
sprites
movement
platformer
Paul Manta
źródło
źródło
Odpowiedzi:
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”.
źródło
OnJump()
zmień wartośćjumping
logiczną na prawdę, a jeśli jesteś w powietrzu ijumping
jest fałszywy, to albo upadasz, albo jesteś na drabinie itp.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.
źródło
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.
źródło
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.
źródło