2012-01-16 4 views
0

基本的には、私はPythonに戻ろうと思っていたので、空中でバウンスする必要がある弾力のあるボールがあるパイゲームで小さなゲームを作ることにしました。問題は、私が関数clock.tick()clock.get_time()を使用すると、get_timeは、渡された時間をミリ秒で返しますが、時間はミリ秒で渡される* 10です。Pygame clock関数が奇妙な値を返す

マイコード:それは現実の世界にその/ 100でのようにスムーズに動作しますが、その/ 1000本当に遅い動作します

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) 

+1

は 'clock.get_ticks'を使用してみてください秒に変換したいことを、あなたはすべてのあなたのユニットが右持っていることを確認してください。 'pygameの時間はミリ秒(1/1000秒)で表されます。ほとんどのプラットフォームでは、約10ミリ秒の時間分解能が制限されています。この解像度はミリ秒で、TIMER_RESOLUTION定数に与えられます。 – TyrantWave

答えて

0

「1000.0」の代わりに「1000」で区切って、問題の一部が切り捨てられている可能性があります。すでに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はこれで動作していることを確認することができます。キャップを外したままにしておくと、本当に高いFPSを持つことができ、小さなデルタを与え、intで割ったときに1より大きくないので、まったく数字を得ることはほとんどありません。

はまた、あなたが本当にミリ使うべき

関連する問題