如何解决玩家在 pygame 中移动不顺畅
所以我在 pygame 中制作了这个游戏,我希望玩家移动并且它移动但不是我想要的方式。它有点传送然后恢复正常行走,然后再次传送等等。
>这是现在的代码:
import pygame
pygame.init()
screen = pygame.display.set_mode((1000,1000))
clock = pygame.time.Clock()
playerX = 100
playerY = 100
def ecranAlb():
WHITE = [255,255,255]
screen.fill(WHITE)
def player():
global playerX,playerY
playerImg = pygame.image.load('knight.png')
playerImg = pygame.transform.scale(playerImg,(250,150))
screen.blit(playerImg,(playerX,playerY))
vel = 10
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
playerX -= vel
if keys[pygame.K_RIGHT]:
playerX += vel
if keys[pygame.K_UP]:
playerY -= vel
if keys[pygame.K_DOWN]:
playerY += vel
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
ecranAlb()
player()
clock.tick(200)
pygame.display.flip()
解决方法
不要在 player
函数中加载图像。 pygame.image.load
会导致延迟,因为它非常耗时。在初始化期间加载一次图像,并在函数内部使用加载的图像。
确保图像Surface与显示Surface具有相同的格式。使用 convert()
(或 convert_alpha()
)创建具有相同像素格式的 Surface。当图像在显示器上显示 blit
时,这会提高性能,因为格式是兼容的,并且 blit
不需要执行隐式转换。
playerImg = pygame.image.load('knight.png').convert_alpha()
playerImg = pygame.transform.scale(playerImg,(250,150))
vel = 10
def player():
global playerX,playerY
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
playerX -= vel
if keys[pygame.K_RIGHT]:
playerX += vel
if keys[pygame.K_UP]:
playerY -= vel
if keys[pygame.K_DOWN]:
playerY += vel
screen.blit(playerImg,(playerX,playerY))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。