Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как в pygame сделать обьект, на который можно запрыгнуть?

nightmare лол Ученик (186), на голосовании 1 неделю назад
я только начинаю изучать программирование, и я захотела сделать игру где динозаврик может запрыгивать на коробочки, при столкновении я изменяю позицию y динозаврика на размер коробочки:

if dino_rect.colliderect(box_rect): dino_y -= 5

но не знаю как проверить что динозаврик больше не пересекает коробочку и опустить его обратно. Он просто продолжает идти уже на этой позиции y. Можете помочь пожалуйста? Если этот вопрос показался вам глупым, пожалуйста, не судите строго, мне 13 лет и я не очень хорошо могу сформулировать вопрос. Документация pygame по какой-то причине не открывается..
Голосование за лучший ответ
AleksZZ Мастер (1320) 1 месяц назад
Твой вопрос совсем не глупый.
Для того, чтобы динозаврик перестал "проходить" через коробочку после того, как он на неё запрыгнул, нужно не только уменьшить его позицию по оси Y но и проверять, не упал ли он ниже этого уровня, чтобы корректно вернуть его вниз.
Вот как можно сделать:
После того как динозаврик столкнется с коробочкой и окажется на её поверхности, нужно продолжать проверку, чтобы убедиться, что он больше не "проваливается" через неё.
Нужно проверить, не идет ли динозаврик вниз, и если да, то снова вернуть его к верхней части коробочки.
 if dino_rect.colliderect(box_rect):  # Если динозаврик столкнулся с коробочкой 
dino_y = box_rect.top - dino_rect.height # Устанавливаем y динозаврика на верх коробочки
dino_speed_y = 0 # Останавливаем движение вниз, когда динозаврик запрыгнул
else:
# Если не на коробочке, динозаврик падает
dino_speed_y += gravity # Добавляем гравитацию (например, 0.5)
dino_y += dino_speed_y # Обновляем позицию динозаврика по Y

if dino_y > ground_level: # Если динозаврик упал ниже уровня земли
dino_y = ground_level # Останавливаем его на земле
dino_speed_y = 0 # Останавливаем падение
dino_y — это позиция динозаврика по вертикали.
box_ rect.top — это верхняя граница коробочки.
dino_speed_y — это скорость падения динозаврика.
gravity — это значение гравитации, которое отвечает за падение.
ground_level — это уровень, на котором должен стоять динозаврик, если он не запрыгивает на коробочку.
nightmare лолУченик (186) 1 месяц назад
спасибо огромное! очень помогли!!
Похожие вопросы