ما هي أفضل طريقة للتعامل مع Sprites الدورية للحصول على لعبة عرض من أعلى إلى أسفل

StackOverflow https://stackoverflow.com/questions/1275482

  •  16-09-2019
  •  | 
  •  

سؤال

أنا أعمل في مباراة رأي من أعلى إلى أسفل في الوقت الحالي وأرلم طن عن العفاريت والعارط التعامل معه. سؤالي هو كيفية التعامل مع مجموعة من العفصات التي يمكن تدويرها بما يصل إلى 32 ساعة.

في الوقت الحالي، يوجد كائن معين ورقة العفريت مع جميع الرسوم المتحركة الموجهة مع الكائن الذي يشير إلى 0 درجة في جميع الأوقات. الآن، نظرا لأن الكائن يمكن أن يتدور بما يصل إلى 32 ساعة، فما هي أفضل طريقة للعمل مع تلك الورقة العفريت الأصلية. أفضل تخمين الحالي الخاص بي هو الحصول على البرنامج بشكل أساسي إنشاء 32 ورقة عفريت أكثر عندما يتم تحميل الكائن في اللعبة أولا، ثم جميع الحالات اللاحقة لهذا النوع من الكائن ستشارك تلك الأوراق العفريت هذه.

على أي حال، فإن أي نصيحة في هذا الصدد ستكون مفيدة. اسمحوا لي أن أعرف إذا كنت بحاجة إلى إعادة صياغة السؤال، وأنا أعلم أن نوعها من نوعه غريب. شكرًا

تحرير: أعتقد لمزيد من التوضيح. إذا كان لدي، على سبيل المثال كائن يحتوي على رسوما متحركة من 5 أطر 5 أطر، فهينة ورقة عفريت سهلة للغاية لإنشاء وتنظيم شبكة 2x5 بسيطة (أو 5x2 اعتمادا على كيفية تضعها). لكن المشكلة هي أن هذه الرسوم المتحركة 2 الآن يجب أن تدور في 32 اتجاهات. هذا يعني أنه في النهاية سيكون هناك 320 عداء فردي. سأقول أن (وتصحيح لي إذا كنت مخطئا) منذ أن أشعر بالقلق إزاء الأداء وأسعار الإطار، وتدوير العفاريت على ذبابة كل إطار واحد ليس خيارا. إذن، كيف يجب تنظيم هذه العفصات 320 التي تشكل هذه الرسوم المتحركة 2؟ سيكون أفضل ل

  • فكر في الأمر ك 32 2x5 ورقة العفريت
  • قم بتقسيم ورقة Sprite إلى إطارات فردية، ثم قم بإجراء صفيف في اتجاهات 32 مختلفة لكل إطار (حتى 10 صفائف من 32 Sprites الاتجاهي)
  • آخر....؟
  • لا يهم؟

شكرًا

هل كانت مفيدة؟

المحلول

عادة سوف تضحي بوقت المعالج أو الذاكرة، وتحتاج إلى التوازن بين الاثنين. ما لم يكن لديك حد كبير في المعالج الخاص بك أو كنت تقوم بحساب الكثير من الأشياء باهظة الثمن، فلا يوجد سبب حقيقي لوضع كل ذلك في الذاكرة. تدوير عدد قليل من العفاريات مع تحويل رخيص بما فيه الكفاية أنه بالتأكيد لا يستحق كل هذا العناء لتخزين 32X أكبر قدر ممكن من المعلومات في الذاكرة - خاصة لأن هذه المعلومات هي مجموعة من الصور، والصور تستخدم الكثير من الذاكرة، والتحدث نسبيا.

نصائح أخرى

تترجم 32 اتجاهات العفريت إلى 32 دورنا بمقدار 11.25 درجة.

يمكنك تقليل عدد الصور المسبقة إلى 8 تقوم فقط بحساب أول 90 درجة (11.25, 22.5, 33.75, 45.0, 56.25, 67.5, 78.75, 90.0) واستخدم عمليات الوجه ديناميكيا. تقلبها أسرع بكثير لأنها تقوم بشكل أساسي بتغيير الطلب فقط يتم نسخ الصورة من المخزن المؤقت.

على سبيل المثال، عند عرض صورة تدويرها 101.25 درجة، قم بتحميل الصورة المسبقة من 67.5 درجة وقلبها رأسيا.

لقد أدركت فقط أن هذا يعمل فقط إذا كان الرسوم الخاص بك متماثل ؛-)

عند الحديث عن جهاز كمبيوتر حديث، قد لا تحتاج إلى تحسين أي شيء. تعد الذاكرة المستخدمة من خلال إعادة إصدار العفاريت لا تذكر بالتأكيد، واستخدام وحدة المعالجة المركزية عند تدوير الصورة ربما أيضا. عندما تكون برمجة لجهاز مضمن، فإنه يهم.

يمكنك فقط تدوير العفاريات مباشرة عن طريق تعيين جزء التدوير من تحويل العفريت.

لبعض التعليمات البرمجية العينة، تحقق من الركبة الشمبيتية في هذا Pygame Tutorial.. وبعد يقوم بتدوير العفاريت عندما الشمبانزي "بالدوار".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top