python - Pygame 相机跟随 2d 平铺游戏

标签 python camera 2d pygame

<分区>

 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()

一切正常,除了我想知道我究竟要如何才能将相机移动到玩家所在的地方抱歉,我无法向您显示 map 文件,因为您无法向其中添加图像。但是谢谢你的时间

map 在这里:https://dl.dropboxusercontent.com/u/110087275/2d%20pygame/map5.png 最后代码在这里:https://dl.dropboxusercontent.com/u/110087275/2d%20pygame/2d_pygame.py

再次感谢您的时间和努力!!!!!!

最佳答案

一般来说,要创建“相机效果”,您可以尝试以下操作:

创建两个变量“CameraX, CameraY”(或者给他们自己的名字),每次你在屏幕上 blit 一些东西时,执行以下操作:

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

现在每次你想移动屏幕(带相机)只需使用

CameraX += 10 #Or any value you want

请注意,如果 CameraX 为负数,此方法将不起作用,并且会显示错误行为,因此请考虑将 CameraX = 0 和 CameraY = 0 作为 map 的左上角

此外,您可能还需要尝试使用其他一些选项,例如相机何时移动?以及如何限制相机超出“bif”(您的 map )的限制

提示:

#after input inside the while:
if x > get_width /4 *3:
    CameraX += 10

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

关于python - Pygame 相机跟随 2d 平铺游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19746552/

相关文章:

python - RabbitMQ 是否能够将消息传递给特定的客户端?或者我必须在客户端执行这些检查吗?

python - 将函数变量从一个 python 文件导入到另一个文件

java - 将预览图像坐标映射到图片图像坐标

ios - 在 iOS 上获取相机当前曝光持续时间值?

android - 如何获取设备支持的最大图片尺寸?

c - 在 C 中定义二维 char 数组

python - 生成PCA加载矩阵时如何将pandas dataframe列设置为索引

python - pandas:打印行中包含非零元素的列名称?

c - 二维数组 - C 语言菜单

c# - 如何使用 Unity 将基于 2D 数组的图 block 实例化到平台游戏中?