آموزش ساده Raycast در Unity

در ادامه یک آموزش ساده و کاربردی از Raycast در Unity با کد به زبان C# آورده شده است. این مثال فرض می‌کند که شما یک شیء (مثلاً یک مکعب) در صحنه دارید و با کلیک ماوس روی آن، تغییر رنگ می‌دهد.

🎯 هدف:

تشخیص اینکه کاربر روی یک شیء در صحنه کلیک کرده باشد.

✅ مراحل:

  1. یک شیء قابل کلیک (مثلاً یک کیوب) در صحنه قرار دهید.
  2. یک تگ به آن اختصاص دهید (مثل "Clickable").
  3. اسکریپت زیر را به یک GameObject (مثلاً دوربین یا یک شیء مدیریت‌کننده) اضافه کنید.

💻 کد C# ساده برای Raycast:

using UnityEngine;

public class SimpleRaycast : MonoBehaviour
{
    void Update()
    {
        // بررسی می‌کند که آیا کلید چپ ماوس فشرده شده است
        if (Input.GetMouseButtonDown(0))
        {
            // ایجاد Ray از مکان ماوس به داخل صحنه
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            // انجام Raycast
            if (Physics.Raycast(ray, out hit))
            {
                // بررسی اینکه آیا شیء تگ "Clickable" دارد
                if (hit.collider.CompareTag("Clickable"))
                {
                    Debug.Log("شما روی یک شیء قابل کلیک کلیک کردید!");
                    // مثال: تغییر رنگ شیء
                    Renderer renderer = hit.collider.GetComponent<Renderer>();
                    if (renderer != null)
                    {
                        renderer.material.color = Color.red;
                    }
                }
            }
        }
    }
}

📌 نکات مهم:

  • دوربین شما باید تگ MainCamera داشته باشد تا Camera.main کار کند.
  • شیء هدف باید Collider داشته باشد (مثلاً BoxCollider) تا Raycast بتواند آن را شناسایی کند.
  • اگر از UI استفاده می‌کنید، باید از GraphicRaycaster استفاده کنید (این کد برای اشیاء 3D است).