我尝试使用clamp_ip()
将我的精灵保留在600 x 315的屏幕上,但它似乎无法正常工作。
ship = pygame.image.load("ship.png")
ship_top = screen.get_width() - ship.get_width()
ship_left = screen.get_height()/2 - ship.get_height()/2
while True:
clock.tick(60)
keys = pygame.key.get_pressed()
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if keys[pygame.K_LEFT]:
ship_left = ship_left - 6
elif keys[pygame.K_RIGHT]:
ship_left = ship_left + 6
screen.blit(back, (x,0))
screen.blit(back2,(x-screenWidth,0))
screen.blit(ship, (ship_top, ship_left))
screen_rect = pygame.Rect((0, 0), (600, 315))
def moveme(ship,ship_top,ship_left):
ship.rect.move_ip((ship_top,ship_left))
ship.rect.clamp_ip(screen_rect)
答案 0 :(得分:0)
你永远不会打电话给moveme
;您可以直接使用 unclamped 变量ship_left
来代替使用矩形。
答案 1 :(得分:0)
要使用clamp_ip
,您必须使用Rect
:
ship = pygame.image.load("ship.png")
ship_top = screen.get_width() - ship.get_width()
ship_left = screen.get_height()/2 - ship.get_height()/2
ship_r = ship.get_rect(top=ship_top, left=ship_left)
然后您可以在主循环中使用Rect
方法:
if keys[pygame.K_LEFT]:
ship_r.move_ip(-6, 0)
elif keys[pygame.K_RIGHT]:
ship_r.move_ip(6, 0)
ship_r.clamp_ip(screen_rect)
screen.blit(back, (x,0))
screen.blit(back2,(x-screenWidth,0))
screen.blit(ship, ship_r)