2009-10-29 2 views
0

J'ai un pygame.Timer en cours d'exécution dans mon jeu appeler une fonction de tirage au sort 32 fois/seconde. La méthode de dessin obtient des positions de tous les éléments sur mon écran et les blesse en conséquence. Cependant, je veux que le personnage principal se déplace plus lentement que les autres objets.et le calendrier à cycles de marche pygame

Dois-je mettre en place une minuterie spécifiquement pour elle ou devrais-je blit les mêmes images à plusieurs reprises? Y a-t-il une meilleure façon de le faire? Une poussée dans la bonne direction serait génial :)

(Si quelqu'un est intéressé, est le code ici qui contrôle actuellement ce cadres pour envoyer au dessin: http://github.com/kallepersson/subterranean-ng/blob/master/Player.py#L88)

Répondre

1

Votre cadre de cycle de marche (comme tout mouvement) devrait être une fonction de l'heure absolue, pas du nombre d'images. par exemple:

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

Merci, mais que représente l'argument millis? – kallepersson

+0

L'heure actuelle, en millisecondes. –