Physics.Raycast
جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 35 من 71.
يطلق فحص الأشعة خطًا غير مرئي من نقطة باتجاه معيّن، ويُبلغ عمّا إذا كان قد اصطدم بمصادم. تُرجع Physics.Raycast(origin, direction, maxDistance) القيمة true عندما يكون هناك مصادم على الخط ضمن مسافة maxDistance وحدة، وتُرجع false خلاف ذلك. تكبح هذه السيارة عندما يكون أي شيء على بُعد أقل من وحدتين أمام مقدمتها:
public float brakeDistance = 2f;
void Update()
{
if (Physics.Raycast(transform.position, transform.forward, brakeDistance))
{
Debug.Log("Brake!");
}
}يدور transform.forward مع السيارة، لذا يتجه الشعاع دائمًا إلى خارج مقدمتها؛ أما Vector3.forward فيشير دائمًا على امتداد محور z للعالم. يبدأ الشعاع من مركز السيارة، داخل مصادمها، والشعاع لا يُبلغ أبدًا عن مصادم يبدأ من داخله، لذا لا ترى السيارة نفسها. إذا حذفت maxDistance فسيستمر الشعاع إلى ما لا نهاية: وستكبح السيارة بسبب جدار على الجانب الآخر من الخريطة.
ترصد الأشعة المصادمات، لا ما يتم رسمه: فالجسم الذي يحتوي على Renderer ولا يحتوي على مصادم يكون غير مرئي لها، ويُحتسب مصادم المشغّل اصطدامًا. أثناء الاختبار، يرسم Debug.DrawRay(transform.position, transform.forward * brakeDistance, Color.red) الشعاع في نافذة Scene في Unity.
التحدي
متوسطاجعل باب المتجر يفتح عندما يقف شخص تحت المستشعر.
- في
Update()، اختبرPhysics.Raycast(transform.position, Vector3.down, reach): شعاعًا يتجه مباشرةً إلى الأسفل، طولهreachوحدة، ويتوقف فوق الأرض. - عندما تكون النتيجة صحيحة، استدعِ
door.SetActive(false);، وفيelse،door.SetActive(true);.
اضغط على «العب» وامشِ بالزائر إلى تحت المستشعر: يفتح الباب، ثم يُغلق خلفه. ثم اضغط على «تحقق».
جرّب بنفسك
using UnityEngine;
public class DoorSensor : MonoBehaviour
{
public GameObject door;
public float reach = 3f;
void Update()
{
// افتح الباب ما دام الشعاع المتجه إلى الأسفل من Sensor يصطدم بشيء ما.
}
}
جميع دروس الفيزياء وأسلوب اللعب
1الجسم الصلب (Rigidbody)
الجاذبية والكتلةالدفع باستخدام AddForceالقفز باستخدام دفعةFixedUpdate للفيزياءالسرعة المتجهةالأجسام الحركيةمراجعة: منصة الإطلاق4الكوروتينات
InvokeInvokeRepeating, CancelInvokeأول Coroutine لكالحلقات داخل الكوروتيناتإيقاف الكوروتيناتمراجعة: العد التنازلي10المشروع: الهروب من الحلبة
الحلبةالصيادونتدرّب بنفسك: Playground لـ Unity