Python Pygame相机跟随2d平铺游戏

Python Pygame相机跟随2d平铺游戏,python,camera,2d,pygame,Python,Camera,2d,Pygame,一切都很好,只是我想知道我到底怎么才能把相机移到播放器所在的位置对不起,我不能给你看地图文件,因为你不能向它添加图像。但是谢谢你的时间 地图如下: 最后,代码在这里: 再次感谢您的时间和努力 通常,要创建“相机效果”,您可以尝试以下操作: import pygame, sys from pygame.locals import * pygame.init() size = width, height = 480,320 screen = pygame.display.set_m

一切都很好,只是我想知道我到底怎么才能把相机移到播放器所在的位置对不起,我不能给你看地图文件,因为你不能向它添加图像。但是谢谢你的时间

地图如下: 最后,代码在这里:

再次感谢您的时间和努力

通常,要创建“相机效果”,您可以尝试以下操作:

 import pygame, sys 
 from pygame.locals import * 

 pygame.init()

 size = width, height = 480,320
 screen = pygame.display.set_mode(size)
 r = 0
 bif = pygame.image.load("map5.png") 
 pygame.display.set_caption("Pygame 2D RPG !")
 x,y=0,0
 movex, movey=0,0
 character="boy.png"
 player=pygame.image.load(character).convert_alpha()
 while True:
for event in pygame.event.get():
    if event.type == pygame.QUIT:
        pygame.quit()
        sys.exit()
    if event.type==KEYDOWN:
        if event.key==K_a:
            movex=-1
        elif event.key==K_d:
            movex=+1
        elif event.key==K_w:
            movey=-1
        elif event.key==K_s:
            movey=+1
    if event.type==KEYUP:        
        if event.key==K_a:
            movex=0
        elif event.key==K_d:
            movex=0
        elif event.key==K_w:
            movey=0
        elif event.key==K_s:
            movey=0    

    x+=movex
    y+=movey    

    screen.fill((r,0,0))
    screen.blit(bif,(0,0))
    screen.blit(player,(x,y))
    pygame.display.flip()
创建两个变量“CameraX,CameraY”(或为它们指定您自己的名称),每次在屏幕上输入内容时,请执行以下操作:

 import pygame, sys 
 from pygame.locals import * 

 pygame.init()

 size = width, height = 480,320
 screen = pygame.display.set_mode(size)
 r = 0
 bif = pygame.image.load("map5.png") 
 pygame.display.set_caption("Pygame 2D RPG !")
 x,y=0,0
 movex, movey=0,0
 character="boy.png"
 player=pygame.image.load(character).convert_alpha()
 while True:
for event in pygame.event.get():
    if event.type == pygame.QUIT:
        pygame.quit()
        sys.exit()
    if event.type==KEYDOWN:
        if event.key==K_a:
            movex=-1
        elif event.key==K_d:
            movex=+1
        elif event.key==K_w:
            movey=-1
        elif event.key==K_s:
            movey=+1
    if event.type==KEYUP:        
        if event.key==K_a:
            movex=0
        elif event.key==K_d:
            movex=0
        elif event.key==K_w:
            movey=0
        elif event.key==K_s:
            movey=0    

    x+=movex
    y+=movey    

    screen.fill((r,0,0))
    screen.blit(bif,(0,0))
    screen.blit(player,(x,y))
    pygame.display.flip()
现在,每次你想移动屏幕(使用相机)时,只需使用

screen.blit(bif,(0 -CameraX,0 -CameraY))
screen.blit(player,(x -CameraX,y -CameraY))
pygame.display.flip()

注意,如果CameraX是负数,那么这种方式就不起作用了,所以将显示Biggy行为,因此考虑CMAXAX=0和CAMMAY=0作为地图的左上角< /P> 此外,使用此功能,您可能需要使用一些其他选项,例如相机何时移动?以及如何限制相机超出“bif”(您的地图)的限制

提示:


如果“男孩”角色移动超过屏幕宽度的3/4,此代码将使相机移动到“右侧”

如果玩家靠近屏幕边界,则不移动玩家,但移动地图和其他元素。请参阅:什么是
bif
?这对我来说是个错误
#after input inside the while:
if x > get_width /4 *3:
    CameraX += 10