Вопрос
В моей игре запущен pygame.Timer, вызывающий функцию рисования 32 раза в секунду. Метод рисования получает позиции от всех элементов на моем экране и соответственно их блиит. Однако я хочу, чтобы главный персонаж ходил медленнее, чем другие объекты.
Должен ли я установить таймер специально для него или я должен просто перетаскивать одни и те же кадры несколько раз? Есть ли лучший способ сделать это? Толчок в правильном направлении был бы потрясающим:)
(Если кому-то интересно, вот код, который в настоящее время контролирует, какие кадры отправлять на чертеж: http://github.com/kallepersson/subteriterranean-ng/blob/master/Player.py#L88 )
Решение
Ваш кадр цикла ходьбы (как и все движения) должен быть функцией абсолютного времени, а не числа кадров. например:.
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