我正在用 pymunk 制作一个 pong 克隆,以了解 lib 的工作原理。我让球正确地从墙上反弹,但球拍仍然拒绝停留在由片段定义的矩形内,屏幕的每一侧都有一个。
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
。问题是,当拨片到达屏幕的顶部或底部时,它不会在这些坐标上停下来,而是会稍微向上(或向下)移动,直到相应的键被释放,此时它会慢慢返回相反的方向方向。该部分似乎对桨提供了某种阻力,但只能设法将其停止在屏幕外的一半。
为什么会这样?如何限制桨的运动,使其仅在周围部分确定的范围内移动?