pygame - столкновения: телепортация и "скользящая" проблема
Я сделал пару сообщений о столкновениях с пигамами, и вот еще один. Прошу прощения за "спам" постов, но эти баги мне странны. Кроме того, я работаю с группой, поэтому я не уверен, что проблема заключается в коде, который я сделал, или в коде, который сделали другие.
Тем не менее, вот ссылка на наш GitHub: https://github.com/drexel-game-devs/Project_Folder
Весь код, на который я ссылаюсь, находится в папке "Код" в разделе "Активы игрока".
Я отвечаю за создание класса Physics_Engine, в котором обрабатываются коллизии. Функция вызывается в классе Player_Assets, где хранится класс Player. Прямо сейчас столкновения обнаруживаются и обрабатываются сбой. Если я подойду к объекту справа, игрок остановится на некоторое время, а затем телепортируется через объект. Приближение к объекту сверху еще более странно: игрок "соскользнет" с объекта и сползет вниз по его левой / правой стороне, а затем упадет с "низа" объекта.
Любая помощь будет оценена. Заранее спасибо.
1 ответ
Я вижу большую проблему в handle_collision
Вы меняете где-то x
а также y
в то же время, а затем
вы получаете столкновения -
spritecollide()
если вы двигаетесь
left/right
ты меняешьx
И здесь проблема.
spritecollide()
дает вам все столкновения - left/right
а также top/bottom
,
Может случиться так, что игрок столкнется только top/bottom
но ты будешь поступать так left/right
столкновение (и вы будете двигать игрока к left/right
боковая сторона).
-
Ты должен сделать:
только изменить
x
получать столкновения - это дает только
left/right
столкновенияесли вы двигаетесь
left/right
ты меняешьx
только изменить
y
получать столкновения - это дает только
top/bottom
столкновенияесли вы двигаетесь
top/bottom
ты меняешьy