2012-01-16 5 views
0

기본적으로 저는 파이썬으로 돌아가고 싶었습니다. 파이 게임에서 작은 게임을 만들기로 결심했습니다. 공중에서 튀는 공이 있어야합니다. 문제는 내가 clock.tick()clock.get_time() 함수를 사용할 때, get_time은 밀리 세컨드 단위로 전달 된 시간을 반환해야하지만 밀리 초 단위로 시간이 전달된다는 것입니다.파이 게임 시계 함수가 이상한 값을 반환합니다.

내 코드 : 그것은 현실 세계의/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보다 크지 않으므로 거의 숫자를 얻지 못합니다.

또한, 당신이 정말로 밀리 사용해야