每个pygame都有一个如下所示的游戏循环:
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.flip()
print("tick " + str(pygame.time.get_ticks()))
clock.tick(1)
Run Code Online (Sandbox Code Playgroud)
根据api get_ticks():
返回自调用pygame.init()以来的毫秒数.在pygame初始化之前,这将始终为0.
但是clock.tick():
应该每帧调用一次此方法.它将计算多少.自上一次调用以来已经过了几毫秒.
如果传递可选的帧率参数,该函数将延迟以使游戏运行速度低于每秒给定的滴答数.这可以用于帮助限制游戏的运行时速度.通过每帧调用一次Clock.tick(40),程序将永远不会超过每秒40帧.
我有点困惑,这是否意味着clock.tick()直接影响自游戏开始以来经过了多少毫秒?
所以clock.tick(40)意味着我"发出"每秒40帧,而while循环每秒运行40次?
我没有看到fps和ticks之间的关系.
更新:我实际上只是测试了它,并且get_ticks()仍然以mls返回实际时间,无论你给予什么fps tick() - 0.1或者30或者60.
所以它似乎clock.tick()只是设置了游戏应该运行的速度,以及循环应该自我更新的频率.
不过我还是有点困惑,欢迎其他答案.
import pygame
pygame.init()
red = 255,0,0
blue = 0,0,255
black = 0,0,0
screenWidth = 800
screenHeight = 600
gameDisplay = pygame.display.set_mode((screenWidth,screenHeight)) ## screen width and height
pygame.display.set_caption('JUST SOME BLOCKS') ## set my title of the window
clock = pygame.time.Clock()
class player(): ## has all of my attributes for player 1
def __init__(self,x,y,width,height):
self.x = x
self.y = y
self.height = height
self.width = width
self.vel = 5
self.left = False
self.right = False
self.up = False
self.down = False
class …Run Code Online (Sandbox Code Playgroud) 我正在pygame上练习,我想知道如何才能使帧速率不影响游戏的执行速度
我希望FPS 不被锁定,并且游戏始终以相同的速度运行。
到目前为止,我一直在使用该pygame.time.Clock.tick功能,但角色的速度会根据 FPS 的数量而变化,这是我不想要的。