مطابقة الاختبار مع القاعدة
بالنسبة إلى المستطيلات المحاذية للمحاور، قارن حدود كل كائن اليسرى واليمنى والعليا والسفلى؛ يحدث التداخل عندما تتقاطع الفترات على كلا المحورين. وبالنسبة إلى الدوائر، قارن المسافة بين المركزين بمجموع نصفي القطر. يمكن للعبة الشبكة الاستغناء تماماً عن حساب الأشكال بالتحقق مما إذا كان ممثلان يشغلان الخلية نفسها.
أنشئ مشهداً تشخيصياً صغيراً يتضمن شكلين ملونين واعرض منطقتي التصادم المحددتين. حرّك كل زوج لاختبار تماس الحواف والتداخل الجزئي والمرور بالقرب من دون تصادم. قرر ما إذا كان تماس الحواف يُحسب تصادماً، وطبّق الاتفاق نفسه دائماً حتى لا تتعارض الحركة مع احتساب النقاط.
لا تفوّت التصادمات أثناء الحركة السريعة
يمكن أن يكون الجسم السريع على أحد جوانب الجدار الرقيق في أحد التحديثات وعلى الجانب الآخر في التحديث التالي. يمكن أن تساعد خطوات المحاكاة الثابتة الأصغر حجمًا، ولكنها ليست الحل الوحيد: اختبر مقطعًا مكتسحًا أو هدفًا موسعًا عندما يكون نطاق الحركة كبيرًا بالنسبة لسمك العائق.
عند وجود كائنات كثيرة، استبعد أولاً الأزواج التي لا يمكن أن تكون متقاربة باستخدام شبكة خشنة أو خلايا مكانية، ثم أجرِ الاختبارات التفصيلية على الأزواج المرشحة. قِس الأداء قبل إضافة هذه البنية؛ فمع بضع عشرات من الكيانات، قد تكون مقارنة كل زوج مباشرة أسهل في الصيانة وكافية تماماً.
أسئلة عن كشف تصادم اللعبة
هل يجب أن تطابق مناطق التصادم حدود الرسوم؟
عادة لا. يمكن للمستطيل أو الدائرة المتسامحة قليلاً أن تجعل عناصر التحكم تبدو أكثر عدلاً. قم بعرض مربعات الإصابة أثناء التطوير وقم بضبطها وفقًا للقاعدة المقصودة وتوقعات اللاعب.
هل يمكن لـ Canvas أن يخبرني ما إذا كان هناك تصادم بين كائنين؟
يوفر Canvas اختبارات للمسارات مثل isPointInPath() للتحقق مما إذا كانت نقطة تقع داخل مسار مرسوم، لكنه لا يحدد قواعد عامة لتصادم كائنات اللعبة. اجعل هندسة المحاكاة صريحة ومستقلة عن الرسم.
للمزيد من القراءة
هل لاحظت معلومة قديمة؟ الإبلاغ عن تصحيح