Menu
CoddyTech
flag Ar iconالعربيةdown icon

Physics.Raycast

جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 33 من 63.

يُطلق فحص الأشعة خطًا غير مرئي من نقطة وفي اتجاه معيّن، ويُبلِغ عمّا إذا اصطدم بمُصادِم. تُرجع 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.

challenge icon

التحدي

متوسط

اجعل باب المتجر آليًا. يوجد البرنامج النصي DoorSensor على المستشعر فوق المدخل، على ارتفاع 3.5 وحدات عن الأرض. يعيّن المفتش له door وreach بقيمة 3.

  • في كل إطار، أطلق شعاعًا من المستشعر مباشرةً إلى الأسفل بطول reach وحدة.
  • ما دام الشعاع يصطدم بشيء، يكون الباب مفتوحًا: أخفه باستخدام SetActive(false). وعندما لا يصطدم بأي شيء، أظهر الباب مجددًا.

الأرض خارج مدى الشعاع، لذا يظل الباب مغلقًا إلى أن يقف أحدهم تحت المستشعر. اضغط على Play وامشِ بالزائر إلى تحته باستخدام الأسهم، ثم اضغط على Check.

جرّب بنفسك

using UnityEngine;

public class DoorSensor : MonoBehaviour
{
    public GameObject door;
    public float reach = 3f;

    void Update()
    {
        // افتح الباب ما دام الشعاع المتجه إلى الأسفل من Sensor يصطدم بشيء ما.
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الفيزياء وأسلوب اللعب