pygame - столкновения: телепортация и "скользящая" проблема

Я сделал пару сообщений о столкновениях с пигамами, и вот еще один. Прошу прощения за "спам" постов, но эти баги мне странны. Кроме того, я работаю с группой, поэтому я не уверен, что проблема заключается в коде, который я сделал, или в коде, который сделали другие.

Тем не менее, вот ссылка на наш GitHub: https://github.com/drexel-game-devs/Project_Folder

Весь код, на который я ссылаюсь, находится в папке "Код" в разделе "Активы игрока".

Я отвечаю за создание класса Physics_Engine, в котором обрабатываются коллизии. Функция вызывается в классе Player_Assets, где хранится класс Player. Прямо сейчас столкновения обнаруживаются и обрабатываются сбой. Если я подойду к объекту справа, игрок остановится на некоторое время, а затем телепортируется через объект. Приближение к объекту сверху еще более странно: игрок "соскользнет" с объекта и сползет вниз по его левой / правой стороне, а затем упадет с "низа" объекта.

Любая помощь будет оценена. Заранее спасибо.

1 ответ

Я вижу большую проблему в handle_collision

Вы меняете где-то x а также y в то же время, а затем

  1. вы получаете столкновения - spritecollide()

  2. если вы двигаетесь left/right ты меняешь x

И здесь проблема.

spritecollide() дает вам все столкновения - left/right а также top/bottom,

Может случиться так, что игрок столкнется только top/bottom но ты будешь поступать так left/right столкновение (и вы будете двигать игрока к left/right боковая сторона).

-

Ты должен сделать:

  1. только изменитьx

  2. получать столкновения - это дает только left/right столкновения

  3. если вы двигаетесь left/right ты меняешь x

  4. только изменитьy

  5. получать столкновения - это дает только top/bottom столкновения

  6. если вы двигаетесь top/bottom ты меняешь y

Другие вопросы по тегам