Piszę grę w Delphi, problem pojawił się w chwili gdy na planszy gry umieściłem platformę która jest pochylona w górę i prawą stronę. Zastanawialiście się kiedyś jaki kod napisać żeby ludzik ładnie wchodził na tą platformę (czyli jeśli idzie w prawo, jednocześnie idzie w górę po platformie). Jeśli idzie w lewo (schodzi w dół). Według mnie trzeba użyć tablic z danymi o platformie, a Wy co o tym sądzicie?
- Rejestracja:prawie 16 lat
- Ostatnio:8 miesięcy
Nie pisałem nigdy gier, nie wiem jak masz opisany ruch postaci ale jakbym pisał to podszedłbym do problemu w prosty sposób (chyba że w trakcie coś by się zmieniło). Dla pochylni znasz kąt nachylenia. Wiesz ile wynosi twój ruch postaci w bok. Z tangensa policzył bym położenie w osi pionowej. Jeśli ruch miałby być jeszcze dokładniejszy (zawsze ta sama odległość ruchu w bok wzdłuż wektora kierunki a nie osi poziomej) to z sinusa liczysz położenie w osi pionowej.

- Rejestracja:ponad 13 lat
- Ostatnio:około 13 godzin
- Lokalizacja:Tuchów
- Postów:12171
Prosty sposób implementacji terenu oraz mechanizmu przeprowadzania kolizji i wyrównywania bohatera z platformami opisany jest dość szczegółowo w starym artykule pt. Programming M.C. Kids – zachęcam do przeczytania.
Wszystko zależy od wymagań – czy poziom jest podzielony na kafle i typów kafli jest określona liczba, czy kształt platform może być dowolny (czyli dowolnie nieregularny); czy kolizje przeprowadza się na podstawie punktu (hot spotu) czy obszaru (hit boksu).
Artykuł który podlinkowałem wyżej będzie pomocny, jeśli krzywizna terenu ma być nieskomplikowana i chciałbyś sam zaimplementować cały mechanizm interakcji bohatera z otoczeniem. Normalnie to korzysta się z gotowych funkcji służących do przeprowadzania kolizji i będących częścią API frameworka dotyczącą fizyki.

- Rejestracja:prawie 6 lat
- Ostatnio:około rok
- Postów:21
Zakładam, że masz jakąś zmienną vspeed która udaje "grawitacje" w obiekcie ludzika, będąc na platformie (kolizja ludzika z platformą) dajesz ten vspeed na zero,
w lewo np.
x-=4; y+=1
w prawo
x+=4; y-=1
gdzie 4 to prędkość ludzika na jednego fpsa, a 1 to przechylenie platformy na tych 4 pikselach
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.