如何使对象在离开窗口边界后出现在开始(或结束)(使用pygame)



所以我尝试在pygame中使用一些简单的动画和碰撞。我试图让一个矩形在离开边界后出现在开始(或结束(,但即使我的方法在处理y坐标时有效,它在处理x轴时也会失败。但是我不太明白为什么。

这段代码可能会给带来麻烦

def movement():
keys_pressed = pygame.key.get_pressed()
if keys_pressed[pygame.K_a]:
red_rect.x -= vel
if keys_pressed[pygame.K_d]:
red_rect.x += vel
if keys_pressed[pygame.K_w]:
red_rect.y -= vel
if keys_pressed[pygame.K_s]:
red_rect.y += vel
if (red_rect.x) == 600:
red_rect.x = 0
if red_rect.x == 0:
red_rect.x = 600
if red_rect.y == 600:
red_rect.y = 0
if red_rect.y == -40:
red_rect.y = 600

还有人能告诉我如何在另一侧显示另一个边界之外的部分吗(矩形不应该立即改变位置,这样过渡更平滑(感谢您的任何提示或回答

不要检查坐标是否等于(==(0或600,而是检查坐标是否为<0或>=600:

if (red_rect.x) >= 600:
red_rect.x = 0
if red_rect.x < 0:
red_rect.x = 600
if red_rect.y >= 600:
red_rect.y = 0
if red_rect.y < 0:
red_rect.y = 600

您的代码可以大大简化。pygame.key.get_pressed()返回一个0和1的数组。使用这些值来计算移动。使用模(%(运算符计算位置:

def movement():

keys_pressed = pygame.key.get_pressed()
red_rect.x += (keys_pressed[pygame.K_d] - keys_pressed[pygame.K_a]) * vel
red_rect.y += (keys_pressed[pygame.K_s] - keys_pressed[pygame.K_w]) * vel

width, height = 600, 600
red_rect.x = red_rect.x % width
red_rect.y = red_rect.y % height

最新更新