Я делаю клон клон с pymunk, чтобы узнать, как работает lib. Я получил мяч, отскакивающий от стен правильно, но весло по-прежнему отказывается оставаться внутри прямоугольника, определенного сегментами, по одному с каждой стороны экрана.pymunk - Как ограничить движение?
def handle_input(self):
keys = pygame.key.get_pressed()
if keys[K_UP]: return Vec2d(0, 200)
elif keys[K_DOWN]: return Vec2d(0, -200)
else: return Vec2d(0, 0)
Эта функция определяет, если K_UP
или K_DOWN
нажатия клавиш. Если это так, он возвращает новый вектор с требуемой скоростью, который затем присваивается paddle.body.velocity
. Проблема заключается в том, что когда весло достигает верхней или нижней части экрана, вместо того, чтобы останавливаться на этих координатах, оно идет немного дальше (или вниз) до тех пор, пока соответствующий ключ не будет отпущен, и в этот момент он медленно возвращается в противоположную сторону направление. Кажется, что сегмент предлагает какое-то сопротивление весле, но ему удается остановить его на полпути от экрана.
Почему это происходит? Как я могу ограничить движение весла так, чтобы он двигался только в пределах, установленных окружающими сегментами?
Вы можете разместить остальную часть кода, которая имеет отношение к проблеме? Например. где вы настраиваете сегменты, где вы обрабатываете результат обработчика клавиатуры и т. д. –
Если вы этого еще не сделали, возможно, стоит опубликовать ссылку на этот вопрос на форуме chipmunk. –