سؤال

ولدي 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top