问题描述
我正在尝试在pygame中移动一个矩形 这是我要开始工作的代码:
currBlock1 = pygame.draw.rect(surface,(0,255,255),(340,50,60,30))
currBlock2 = pygame.draw.rect(surface,(310,80,30))
currBlock1.move(340,80)
currBlock2.move(310,110)
这是怎么了?
解决方法
pygame.Rect.move
不会移动矩形本身。该方法返回一个新的并移动的矩形。您必须使用就地运行的 pygame.Rect.move_ip
。此外,move
/ move_ip
的参数是偏移量而不是位置:
currBlock1.move_ip(0,30)
currBlock2.move_ip(0,30)
实际上,您在每一帧中都重新创建了相同的矩形。您需要在应用程序循环之前构造pygame.Rect()
对象,并且必须在循环中移动它:
currBlock1 = pygame.Rect(340,50,60,30)
currBlock2 = pygame.Rect(310,80,30)
# application loop
while run:
# [...]
pygame.draw.rect(surface,(0,255,255),currBlock1)
pygame.draw.rect(surface,currBlock2)
currBlock1.move_ip(0,30)
currBlock2.move_ip(0,30)