所以我试着在玩家跳伞的时候给他做个屏风
视频当我闪现我的render_offset时,它会让我的屏幕在我的玩家跳转时摇动,当我加载到游戏中时,游戏会运行缓慢,我不知道为什么?我试图为我的游戏执行一个屏幕扫描方法,但这总是会使我的游戏开始缓慢,我不知道为什么,因为我只是把我的render_offset闪现到我的窗口,因为我添加了这个部分,使我的屏幕工作,我加载在我的游戏,一切只是运行缓慢和屏幕工作,但如果我删除它将无法工作,游戏将顺利运行,我需要一个方法,使这个工作而不滞后我的屏幕谢谢!
window.blit(window,(render_offset))这里是屏幕的工作原理,如果我们点击空格,那么我们的奶昔将等于下面的20,如果抖动不超过0:那么保持-摇到1,我们有一个呈现变量和一个列表,然后它下面,我们说,如果抖动然后随机两个列表。
# screenshakey
if keys[pygame.K_SPACE]:
shake = 20
if shake > 0:
shake -= 1
render_offset = [0,0]
if shake :
render_offset[0] = random.randint(0, 8) - 4
render_offset[1] = random.randint(0, 8) - 4我的完整游戏代码:脚本
我不知道为什么它在我的测试版本上工作,即使我为我的游戏做了同样的事情,为什么它落后于我的游戏,但在这里没有滞后,任何有用的修复是值得赞赏的!我试着让我的屏风,当我的球员跳的时候,没有滞后,谢谢!
import pygame,time,random
pygame.init()
WINDOW_SIZE = (500,500)
window = pygame.display.set_mode((WINDOW_SIZE), pygame.NOFRAME)
display = pygame.Surface((500,500)) # used as the surface for rendering, which is scaled
class player:
def __init__(self,x,y,height,width,color):
self.x = x
self.y = y
self.height = height
self.width = width
self.color = color
self.rect = pygame.Rect(x,y,height,width)
def draw(self):
self.rect.topleft = (self.x,self.y)
pygame.draw.rect(display,self.color,self.rect)
white = (205,105,205)
player1 = player(250,250,50,50,white)
player2 = player(290,250,150,50,white)
player3 = player(350,250,50,150,white)
def redraw():
display.fill((0,0,0))
player1.draw()
player2.draw()
player3.draw()
run = True
fps = 60
clock = pygame.time.Clock()
screenshake = 0
while run:
clock.tick(fps)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
keys = pygame.key.get_pressed()
#
# screenshakey
if keys[pygame.K_SPACE]:
screenshake = 30
if keys[pygame.K_RIGHT]:
player1.x += 4
if keys[pygame.K_LEFT]:
player1.x -= 4
if screenshake > 0:
screenshake -= 1
render_offset = [0,0]
if screenshake:
render_offset[0] = random.randint(0, 8) - 4
render_offset[1] = random.randint(0, 8) - 4
redraw()
window.blit(pygame.transform.scale(display,WINDOW_SIZE),render_offset)
pygame.display.update()
pygame.quit()发布于 2021-03-28 08:28:40
尝试使用blit方法的可选区域参数来提高性能:
还可以传递一个可选的区域矩形。这表示要绘制的源面的较小部分。
display曲面约简面积的计算
pos = max(0, render_offset[0]), max(0, render_offset[1])
area_rect = display.get_rect()
area_rect.width -= abs(render_offset[0])
area_rect.height -= abs(render_offset[1])
window.blit(display, pos, area_rect)https://stackoverflow.com/questions/66002650
复制相似问题