# استخدم أبسط اختبار تصادم يلائم الشكل

> اختر تمثيل التصادم الذي يناسب لعبتك، وقلل من عمليات التحقق الزوجية غير الضرورية، وقم بتشخيص الكائنات التي تمر عبر العوائق.

- URL: https://oneshotgems.ai/ar/topics/game-collision-detection
- الفئة: لمطوري الألعاب
- النوع: دليل
- آخر تحديث: 5 أكتوبر 2026

يسأل اكتشاف الاصطدام ما إذا كانت كائنات اللعبة تتداخل أو تتقاطع المسارات. عادةً ما يكون التمثيل الأول الأفضل أبسط من العمل الفني: مستطيلات لخلايا الشبكة والمنصات، أو دوائر للممثلين الدائريين، أو مجموعة صغيرة من الأشكال لعائق غير منتظم. ابدأ بسؤال واضح — اللمس أو الدخول أو العبور — واختر اختبارًا يجيب عليه بشكل متسق. تضيف عمليات فحص البكسل المثالية تعقيدًا ونادرًا ما تكون هناك حاجة إليها في لعبة تكون قواعدها تقريبية بالفعل.

## مطابقة الاختبار مع القاعدة

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

أنشئ مشهداً تشخيصياً صغيراً يتضمن شكلين ملونين واعرض منطقتي التصادم المحددتين. حرّك كل زوج لاختبار تماس الحواف والتداخل الجزئي والمرور بالقرب من دون تصادم. قرر ما إذا كان تماس الحواف يُحسب تصادماً، وطبّق الاتفاق نفسه دائماً حتى لا تتعارض الحركة مع احتساب النقاط.

## لا تفوّت التصادمات أثناء الحركة السريعة

يمكن أن يكون الجسم السريع على أحد جوانب الجدار الرقيق في أحد التحديثات وعلى الجانب الآخر في التحديث التالي. يمكن أن تساعد خطوات المحاكاة الثابتة الأصغر حجمًا، ولكنها ليست الحل الوحيد: اختبر مقطعًا مكتسحًا أو هدفًا موسعًا عندما يكون نطاق الحركة كبيرًا بالنسبة لسمك العائق.

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

## أسئلة

**هل يجب أن تطابق مناطق التصادم حدود الرسوم؟** عادة لا. يمكن للمستطيل أو الدائرة المتسامحة قليلاً أن تجعل عناصر التحكم تبدو أكثر عدلاً. قم بعرض مربعات الإصابة أثناء التطوير وقم بضبطها وفقًا للقاعدة المقصودة وتوقعات اللاعب.

**هل يمكن لـ Canvas أن يخبرني ما إذا كان هناك تصادم بين كائنين؟** يوفر Canvas اختبارات للمسارات مثل isPointInPath() للتحقق مما إذا كانت نقطة تقع داخل مسار مرسوم، لكنه لا يحدد قواعد عامة لتصادم كائنات اللعبة. اجعل هندسة المحاكاة صريحة ومستقلة عن الرسم.

## اتبع فضولك

- [استخدم وقت دلتا لتجنب قفزات الحركة](https://oneshotgems.ai/ar/topics/delta-time-in-games): قم بتطبيق الوقت المنقضي على حركة اللعبة، واختيار سياسة اللحاق بالركب الآمنة، واختبار الحركة بمعدلات تحديث مختلفة وبعد التوقف.
- [أنشئ حلقة ألعاب موثوقة في المتصفح](https://oneshotgems.ai/ar/topics/browser-game-loop): قم ببناء تحديثات لعبة المتصفح والرسم حول إطارات الرسوم المتحركة دون ربط سرعة المحاكاة بمعدل تحديث شاشة اللاعب.
- [استخدم خطوة زمنية ثابتة لفيزياء اللعبة](https://oneshotgems.ai/ar/topics/fixed-timestep-game-physics): تحديثات فيزيائية منفصلة عن العرض بخطوة محاكاة ثابتة وأعمال اللحاق بالحدود واختبارات الأكشاك والاصطدامات.

## للمزيد من القراءة

- [MDN: Canvas isPointInPath()](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/isPointInPath)

---
الصفحة الأساسية: https://oneshotgems.ai/ar/topics/game-collision-detection
