У меня есть пара платформерных игр в javascript, и вот как я реализовал столкновение:
1. Прекратите падать, когда приземлитесь на платформу: Вы можете задать свой спрайт прямоугольником в качестве граничной области, а затем использовать встроенный класс Pygames Rect для обнаружения пересечения. Когда это пересечение происходит между вашим хитбоксом спрайтов (прямоугольник) и прямоугольником платформ (еще один прямоугольник), вы устанавливаете скорость Y игроков на 0.
2. Начните падать, когда бегаете вне платформы. У меня обычно есть переменная, посвященная гравитации, и просто постоянно применяю это к спрайту, чтобы выложить sh вниз. Таким образом, после того как вы перестанете пересекаться с платформой, она упадет вниз.
3. Прекратите движение вверх, когда попадаете на платформу во время прыжка: То же, что и перед пересечением, просто установите скорость Y на 0 после столкновения с прямоугольником и позвольте игроку упасть из-за постоянной гравитации.
4. Прекратите двигаться в сторону, когда попали в стену, но сможете двигаться в противоположном направлении: То же самое, но на этот раз установите скорость X на 0. (если вы застряли в стене, вы всегда можете установить X на более чем 0, чтобы подтолкнуть вас обратно в игру)
Еще одна нота, если вы хотите что-то сделать только тогда, когда ваш спрайт достигнет определенного края платформы, вы можете просто создать прямоугольник, который выравнивается со стороной спрайта. Например, если бы я хотел увидеть, пересекается ли что-то с левой стороной моего спрайта, я мог бы использовать - высота: такая же высота - ширина: 1 - x: x + ширина - y: то же y
Документация на прямоугольники: https://www.pygame.org/docs/ref/rect.html