#python #function #math #pygame
Вопрос:
Я пытаюсь закодировать свою игру в Pygame так, чтобы игрок падал в любое время, когда он не касается пола. Проблема в том, что способ закодировать его, чтобы проверить, является ли координата игрока y ниже 0, а затем остановить процесс падения, но функция cuadratic не всегда будет достигать точного y = 0, так как она перемещается больше пикселей в каждом кадре, возможно, первое значение, которое меньше 0, равно -10. А затем игрок оказывается под экраном.
Я думал о том, чтобы проверить, является ли координата y игрока ниже 0, а затем телепортировать его в y = 0, но это кажется действительно не элегантным решением, и это также заставляет игрока телепортироваться на кадр.
Комментарии:
1. «Я подумал о том, чтобы проверить, является ли координата y игрока ниже 0, а затем телепортировать его в y = 0» — это обычный способ. «это также заставляет игрока телепортироваться на кадр». Нет, это не так. Вы должны «телепортировать» плоскогубца игрока после обнаружения столкновения и до того, как вы его нарисуете.
2. @Rabbid76 спасибо, чувак, это сработало так хорошо, я не знаю, как я об этом не подумал, если все так просто. Две строчки исправили мою игру.
3. Решена ли эта проблема?
Ответ №1:
«Я думал о том, чтобы проверить, является ли координата y игрока ниже 0, а затем телепортировать его в y = 0, но это кажется действительно не элегантным решением».
Это обычный способ. Столкновение останавливает игрока от падения.
«это также заставляет игрока телепортироваться на кадр».
Нет, это не так. Вы должны «телепортировать» плоскогубца игрока после обнаружения столкновения и до того, как вы его нарисуете.
Вы выполняете обнаружение столкновений один раз в каждом кадре. Как только столкновение обнаружено, вы знаете, что игрок ударил объект в какой-то момент во время движения с момента последнего кадра. Вместо того, чтобы вычислять точное время, когда игрок ударяется об объект и останавливает движение, вы ограничиваете позицию игрока объектом.