stopień/pięterko w pygame

0

Witam! zacząłem się uczyć pygame i robię małą grę w stylu mario, albo fireboy and watergirl. Zrobiłem prostą animację chodzącej postaci, może też skakać, ale ma problem z poprawnym wskoczeniem na pięterko. Czy wie ktoś, jak zrobić fragment kodu, który nie pozwoli na to, by ludzik przenikał przez pięterko, by mógł na nim stanąć, mógł pod nim przejść (to nie działało w żadnej wersji, PS: sufit pięterka jest na wysokości phpludzik_height i z niego normalnie zeskoczyć. Jeśli ma ktoś jakiś link do filmiku z takim tutorialem, albo do stronki (po polsku, albo po angielsku), to też będę wdzięczny. To konkretne pięterko, na którym to ćwiczę, znajduje się po prawej stronie planszy (plansza się nie porusza). Mój fragment kodu wyglądał np. tak:

if x_ludzik + ludzik_width > x_stopien or y_ludzik + ludzik_height <= y_stopien:
           y_ludzik = y_stopien - ludzik_height  

w takim wypadku skok z podłogi był ograniczony, ale ludzik jakoś mógł na podłogę wrócić (tylko dzięki kolejnemu podskokowi

w innym przypadku wyglądał tak:

if  x_ludzik + ludzik_width > x_stopien and y_ludzik + ludzik_width > y_stopien and not y_ludzik > y_stopien + stopien_height:
        y_ludzik = y_stopien - ludzik_height

w takim przypadku, jak ludzik wskoczył, to stopami tonął w dolnej części pięterka, jak podszedł do pięterka, to go wciągnęło i stopy miał na wierzchu. W tej wersji ludzik nawet już nie zeskoczył. Czy wie ktoś, jak zrobić, żeby to działało jak w normalnej grze typu Mario? Nie używam na razie obiektów, bo chcę rozwiązać najpierw ten problem z alborytmem... I czy a propos skoku, powinienem robić osobno grawitację (coś, co będzie ludzika przyciągało do ziemi z przyśpieszeniem, gdy przestanie lecieć w górę) a osobno skok, czy też w algorytmie skoku może się od razu znaleźć element spadania?

1

Poruszanie się w grze 2D można właśnie ładnie sobie poukładać w obiekty.

Twoja plansza to zbiór koliderów.
Twój ludek ma kolider w kształcie prostokąta.

Przed wykonaniem każdego ruchu Twoja postać pyta się planszy, czy i w którym miejscu nastąpi kolizja.
Ludek rzutuje swój prostokąt na kolidery planszy i w odpowiednich sytuacjach zmienia swój stan i skraca dystans, o jaki się przemieści.

Całkiem obszerne wytłumaczenie znajdziesz tutaj:

0

Dzięki! Widzę, że Unity (c#), ale może będzie pomocne

1

Tutaj też masz filmik o kolizjach. Ogólnie facet robi dobrą robotę i masz nawet źródła w opisie filmu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1