Python pygame:尝试使用;面积“;在Surface.blit()中标记

Python pygame:尝试使用;面积“;在Surface.blit()中标记,python,pygame,camera,blit,Python,Pygame,Camera,Blit,我试图弄明白如何使用面积参数,一个人可以通过当光碟pygame表面。 在摄影机跟随角色的位置拍摄等轴测rpg视图 只要我的播放器停留在起始屏幕边界内,我的代码就可以正常工作,但一旦我们退出,播放器就会被删除。你能帮我找出我遗漏了什么吗 def run(fullmap): pygame.init() clock=pygame.time.Clock() screen = pygame.display.set_mode((400,400)) # - backgrou

我试图弄明白如何使用面积参数,一个人可以通过当光碟pygame表面。 在摄影机跟随角色的位置拍摄等轴测rpg视图

只要我的播放器停留在起始屏幕边界内,我的代码就可以正常工作,但一旦我们退出,播放器就会被删除。你能帮我找出我遗漏了什么吗


def run(fullmap):
    pygame.init()
    clock=pygame.time.Clock()
    screen = pygame.display.set_mode((400,400))

    # - background -
    fullmap_rect = fullmap.get_rect()

    # - player -
    player = pygame.Surface((100,100))
    player.fill((255,255,255))
    player_rect = player.get_rect()
    player_rect.center = (200, 200)

    # - camera -
    camera = screen.get_rect()
    camera.center = player_rect.center

    # - game loop -
    while 1:
        clock.tick(25)
        for event in pygame.event.get():
            if event.type == pygame.QUIT: sys.exit()

        # - input management -
        keys=pygame.key.get_pressed()
        if keys[pygame.K_DOWN]:
            player_rect.y += 10
            camera.y += 10
        if keys[pygame.K_LEFT]:
            player_rect.x -= 10
            camera.x -= 10
        if keys[pygame.K_UP]:
            player_rect.y -= 10
            camera.y -= 10
        if keys[pygame.K_RIGHT]:
            player_rect.x += 10
            camera.x += 10

        # - screen repaint -
        screen.fill((0,0,0))
        screen.blit(fullmap, (0,0), camera)
        screen.blit(player, player_rect, camera)
        pygame.display.flip()

if __name__ == '__main__':
    RED = (150, 50, 0)
    GREEN = (0, 150, 5)
    BLUE = (50, 0, 150)
    COLORS = (RED, GREEN, BLUE)

    TILE_SIZE = 10
    fullmap = pygame.Surface((1000, 1000))
    for y in range(0, 1000, TILE_SIZE):
        for x in range(0, 1000, TILE_SIZE):
            pygame.draw.rect(fullmap, random.choice(COLORS), (x, y, TILE_SIZE, TILE_SIZE))
    
    run(fullmap)
我期待着跟随我的球员在整个地图上


谢谢你,祝你今天愉快

可选的
区域
参数表示源的较小部分。这对游戏地图很有用,但对玩家来说不是。您希望绘制完整的玩家图像,而不仅仅是其中的一部分。
您必须计算播放器相对于相机的位置:

screen.blit(全图,(0,0),摄像头)
blit(player,(player_rect.x-camera.x,player_rect.y-camera.y))
但是,由于您的播放器位于屏幕中央,因此只需在屏幕中央绘制:

screen.blit(全图,(0,0),摄像头)
blit(player,player.get_rect(center=screen.get_rect().center))

嘿,拉比76。谢谢你的回答,它解决了我的问题!我并没有把我的角色在屏幕中间乱涂,因为在我的整个代码中,有时他不是。“我发现这样管理比较容易。”我明白了。谢谢,不客气。