سؤال
ولدي pygame.Timer تعمل في لعبي استدعاء دالة تعادل 32 مرة / ثانية. طريقة الرسم يحصل المواقف من جميع العناصر على الشاشة وblits وفقا لذلك. ومع ذلك، أريد أن الشخصية الرئيسية ليتجول أبطأ من غيرها من الأشياء تتحرك.
ويجب أن أقوم بإعداد جهاز توقيت خصيصا لذلك أو ينبغي أن مجرد مستوى الذاكرة نفس إطارات عدة مرات؟ هل هناك أي طريقة أفضل للقيام بذلك؟ ومن شأن دفع في الاتجاه الصحيح يكون رهيبة:)
و(إذا كان أي شخص مهتمون، وهنا هو رمز التي تسيطر حاليا ما إطارات لإرسالها إلى الرسم: <لأ href = "http://github.com/kallepersson/subterranean-ng/blob/master/Player.py# L88 "يختلط =" noreferrer نوفولو "> http://github.com/kallepersson/subterranean-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