2009-10-29 3 views
0

У меня есть pygame.Timer, запущенный в моей игре, вызывающий функцию ничьей 32 раза/секунду. Метод рисования получает позиции от всех элементов на моем экране и соответственно их сочетает. Тем не менее, я хочу, чтобы главный герой шел медленнее, чем другие объекты двигались.Walkcycles and timing in pygame

Должен ли я настроить таймер специально для него или мне нужно просто разбить одни и те же рамки несколько раз? Есть ли лучший способ сделать это? Толчком в правильном направлении было бы удивительным :)

(Если кто-то заинтересован, вот код, который в настоящее время контролирует, какие кадры для отправки чертежа: http://github.com/kallepersson/subterranean-ng/blob/master/Player.py#L88)

ответ

1

Ваш цикл ходьбы кадра (как и все движения) должна быть функцией абсолютного времени, а не числа кадров. например,

def walk_frame(millis, frames_per_second, framecount, start_millis=0): 
    millis_per_frame = 1000/frames_per_second 
    elapsed_millis = millis - start_millis 
    total_frames = elapsed_millis/millis_per_frame 
    return total_frames % framecount 
+0

Спасибо, но что представляет собой аргумент millis? – kallepersson

+0

Текущее время, в миллисекундах. –