Pygame时钟函数返回一个奇怪的值

时间:2012-01-16 13:31:10

标签: python pygame

基本上,我想回到Python,所以我决定在pygame制作一个小游戏,那里有一个弹力球,你需要在空中弹跳。问题是,当我使用函数clock.tick()clock.get_time()时,get_time应该返回以毫秒为单位传递的时间,但它以毫秒为单位传递时间* 10.

我的代码:

GRAVITY = 10

def move(self, delta):
    self.x+= (self.vx * delta)
    self.y+= (self.vy * delta)

def speed(self, delta):
    self.vy += (GRAVITY * delta)

clock.tick()

while True:
    clock.tick()
    delta = (clock.get_time() / 100) #should be /1000
    ball.move(delta)
    ball.speed(delta)

当它/ 100时,它在现实世界中运行得很顺利,但它的工作速度确实比它的/ 1000慢。

1 个答案:

答案 0 :(得分:0)

我认为部分问题可能是除以“1000”而不是“1000.0”。你可以验证clock.tick正在使用这个:

import pygame
pygame.init()
i = 0
clock = pygame.time.Clock()
while i < 10: # Just run a few cycles to check the output
    res = clock.tick(1) # Caps framerate to 1 fps
    print res # This should print out 1000
    i += 1

请注意,clock.tick已经返回delta,通常用于限制帧速率。如果没有上限,你可能有一个非常高的FPS,给出一个小的delta,当除以int时,不大于1,所以你很少得到一个数字。

此外,请确保您的所有单位都正确,您确实希望转换为秒数