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

RaycastHit

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

يمكن لـ Physics.Raycast أيضًا إخبارك بما أصابه. أضف out RaycastHit hit بعد الاتجاه: عندما تُرجع الطريقة true، تكون قد ملأت hit بالتفاصيل. تُستخدم out لتمرير طريقة C# قيمة إضافية عبر متغير تقدّمه لها. يسجّل محدد المسافة هذا ما يشير إليه، ومدى بُعده، عند الضغط على Space:

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        if (Physics.Raycast(transform.position, transform.forward, out RaycastHit hit, 50f))
        {
            Debug.Log(hit.collider.name + " is " + hit.distance + " units away");
        }
    }
}

عند توجيهه إلى جدار تبعد واجهته الأمامية 12 وحدة، يسجّل Wall is 12 units away. الحقول الأخرى: hit.point هو الموضع في العالم الذي لامس فيه الشعاع السطح، وhit.normal هو اتجاه السطح عند ذلك الموضع ((0, 1, 0) على أرض مستوية)، وhit.transform هو Transform للكائن الذي أُصيب. ومن خلال hit.collider.gameObject يمكنك الوصول إلى أي شيء آخر يتعلق به، مثل علامته.

اقرأ hit داخل if فقط. عندما لا يصب الشعاع شيئًا، تُرجع Raycast القيمة false ولا يحتوي hit على أي شيء مفيد: تكون قيمة collider فيه null.

challenge icon

التحدي

متوسط

أضِف إلى البندقية منظارًا ليزريًا. يوجد سكربت LaserSight على البندقية، ويُعيّن له Inspector النقطة الحمراء dot (وهي Transform) وrange بقيمة 15. تُدير الأسهم اليسرى واليمنى البندقية.

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

النقطة موجودة على طبقة Ignore Raycast، لذا يمر الشعاع عبر النقطة نفسها. اضغط Play ومرّر الليزر على الحائط والصندوق والبرميل، ثم اضغط Check.

جرّب بنفسك

using UnityEngine;

public class LaserSight : MonoBehaviour
{
    public Transform dot;
    public float range = 15f;

    void Update()
    {
        // ضع النقطة حيث يلتقي الليزر بسطح؛ وأخفِها عندما لا يصطدم الليزر بأي شيء.
    }
}
quiz iconاختبر نفسك

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

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