基本上,我想回到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慢。
答案 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,所以你很少得到一个数字。
此外,请确保您的所有单位都正确,您确实希望转换为秒数