OverlapSphere وSphereCast
جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 38 من 63.
يسأل الشعاع عن خط. تسأل Physics.OverlapSphere(center, radius) عن منطقة كروية الشكل: فهي تُرجع مصفوفة بكل مُصادم يلامس كرة مركزها center، من دون اتجاه أو مسافة. تدمر هذه القنبلة كل صندوق ضمن 3 وحدات عند انفجارها:
void Explode()
{
Collider[] hits = Physics.OverlapSphere(transform.position, 3f);
foreach (Collider c in hits)
{
if (c.CompareTag("Crate"))
{
Destroy(c.gameObject);
}
}
Destroy(gameObject);
}تحتوي المصفوفة على كل ما يقع في النطاق: الأرضية والجدران ومُصادم القنبلة نفسها، لأن اختبارات التداخل لا تتجاهل المُصادم الذي تبدأ من داخله. لذلك تتحقق الحلقة من الوسم قبل اتخاذ أي إجراء. يشير attachedRigidbody لكل مُصادم إلى الجسم الصلب (Rigidbody) الذي يتبعه، أو إلى null للأشياء الثابتة مثل الأرضية.
إن Physics.SphereCast(origin, radius, direction, out hit, maxDistance) هو شعاع سميك: فهو يمسح كرة على طول الخط ويُبلغ عن أول مُصادم كانت الكرة ستصطدم به. تستخدم صخرة نصف قطرها 1 وتتدحرج نحو فجوة عرضها 1.5 بين دعامتين هذه الطريقة لمعرفة ما إذا كانت ستعبر: لا يصطدم شعاع رفيع يمر بمنتصف الفجوة بأي شيء، بينما يصطدم مسح الكرة بإحدى الدعامتين. ومثل الشعاع، يتجاهل مسح الكرة المُصادمات التي تلامسها بالفعل عند نقطة بدايتها.
التحدي
متوسطجهّز المدفع بحزمة واسعة. يوجد النص البرمجي Beam على المدفع، ويمنحه Inspector قيمة radius تساوي 0.5 وrange تساوي 12. يحرّك السهمان الأيسر والأيمن المدفع.
- عند الضغط على Space، امسح كرة نصف قطرها
radiusإلى الأمام من المدفع، بطولrangeوحدة. - إذا أصابت شيئًا، سجّل
Hit Poleمع اسم ما أصابته، ودمّر ذلك الكائن. - إذا لم تصب شيئًا، سجّل
Miss.
يقف العمود الرفيع إلى جانب خط مركز المدفع بقليل. اضغط Play وأطلق النار، ثم اضغط Check.
جرّب بنفسك
using UnityEngine;
public class Beam : MonoBehaviour
{
public float radius = 0.5f;
public float range = 12f;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
// امسح بمسح كرة نصف قطرها radius إلى الأمام: دمّر أول شيء تصطدم به.
}
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الفيزياء وأسلوب اللعب
1الجسم الصلب (Rigidbody)
الجاذبية والكتلةالدفع باستخدام AddForceالقفز باستخدام دفعةFixedUpdate للفيزياءالسرعة المتجهةالأجسام الحركيةمراجعة: منصة الإطلاق3المُحفِّزات
مُصادِمات المُحفِّزOnTriggerEnterالعناصر القابلة للالتقاطمناطق القتلالدخول والخروجمراجعة: المفتاح والباب6اختبارات الأشعة
Physics.RaycastRaycastHitالتحقق من ملامسة الأرض باستخدام شعاعالطبقات وLayerMaskخط الرؤيةOverlapSphere وSphereCastمراجعة: حاجز ليزري