Проблема с вашим кодом в том, что вы только увеличиваете или уменьшаете player.rect.x
на 0.2
, а pygame сохраняет позиции в виде целых чисел. Если значение player.rect.x
установлено на 280
и уменьшено на 0.2
, оно должно стать 279.8
, но на самом деле оно становится 279
из-за преобразования в целое число! Значение действительно изменяется при перемещении влево, но при движении вправо значение увеличивается на 0.2
, но оно просто округляется до исходного значения.
Примечание: из-за того, как функция int()
работает в Python, -0.2
округляется до 0
, поэтому блок не может перемещаться за границу окна, даже если нет явного "столкновения" обнаружение "код выполняется.
Быстрое и простое решение этой проблемы - изменить значение self.speedx
на 1
или больше:
self.speedx = 1
Я надеюсь, что этот ответ помог вам, и если у вас есть какие-либо дополнительные вопросы, касающиеся этого ответа, пожалуйста, не стесняйтесь оставлять комментарии ниже!