عناصر التحكم بالماوس في Unity

في هذا البرنامج التعليمي، ستتعلم كيفية تنفيذ عناصر التحكم الأساسية بالماوس في Unity. وسنتناول اكتشاف إدخال الماوس، والتعامل مع نقرات الماوس، وحركة الماوس، والتفاعل مع كائنات اللعبة باستخدام الماوس.

إعداد المشروع

قبل أن نبدأ في الترميز، دعنا نقوم بإعداد مشروع Unity بسيط:

  1. إنشاء مشروع Unity جديد.
  2. أضف كائنًا جديدًا ثلاثي الأبعاد أو ثنائي الأبعاد إلى المشهد (على سبيل المثال، مكعب أو صورة متحركة).
  3. قم بإنشاء نص برمجي جديد بلغة C# باسم MouseController وقم بربطه بالكاميرا الرئيسية أو بأي GameObject فارغ.

اكتشاف مدخلات الماوس

Unity يوفر طرقًا مدمجة للكشف عن إدخال الماوس. يمكننا استخدام طريقة Input.GetMouseButtonDown للكشف عن ضغطات زر الماوس.

using UnityEngine;

public class MouseController : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButtonDown(0)) // Left mouse button
        {
            Debug.Log("Left mouse button pressed");
        }

        if (Input.GetMouseButtonDown(1)) // Right mouse button
        {
            Debug.Log("Right mouse button pressed");
        }
    }
}

التعامل مع نقرات الماوس

للتعامل مع نقرات الماوس على الكائنات، نحتاج إلى استخدام Raycasting. يسمح لنا Raycasting باكتشاف ما إذا كانت نقرة الماوس تتقاطع مع أي كائنات لعبة في المشهد.

using UnityEngine;

public class MouseController : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit))
            {
                Debug.Log("Hit: " + hit.transform.name);
                // Perform actions on the hit object here
            }
        }
    }
}

حركة الفأرة

يمكن اكتشاف حركة الماوس في Unity باستخدام Input.GetAxis. يمكننا استخدام المحورين Mouse X وMouse Y للحصول على حركة الماوس في الاتجاهين الأفقي والرأسي.

using UnityEngine;

public class MouseController : MonoBehaviour
{
    void Update()
    {
        float mouseX = Input.GetAxis("Mouse X");
        float mouseY = Input.GetAxis("Mouse Y");

        if (mouseX != 0 || mouseY != 0)
        {
            Debug.Log("Mouse moved. X: " + mouseX + " Y: " + mouseY);
        }
    }
}

التفاعل مع كائنات اللعبة

دعنا نوسع البرنامج النصي الخاص بنا للتفاعل مع كائنات اللعبة. سنغير لون الكائن عند النقر عليه.

using UnityEngine;

public class MouseController : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit))
            {
                Renderer renderer = hit.transform.GetComponent();
                if (renderer != null)
                {
                    renderer.material.color = Random.ColorHSV();
                }
            }
        }

        float mouseX = Input.GetAxis("Mouse X");
        float mouseY = Input.GetAxis("Mouse Y");

        if (mouseX != 0 || mouseY != 0)
        {
            Debug.Log("Mouse moved. X: " + mouseX + " Y: " + mouseY);
        }
    }
}

خاتمة

لقد قمنا بتغطية أساسيات عناصر التحكم بالماوس في Unity. لقد تعلمنا كيفية اكتشاف مدخلات الماوس، والتعامل مع نقرات الماوس، وتتبع حركة الماوس، والتفاعل مع كائنات اللعبة باستخدام Raycasting. يمكن توسيع هذه المفاهيم لإنشاء تفاعلات أكثر تعقيدًا في مشاريع Unity الخاصة بك.