كيفية إنشاء حركة سلسة للفأرة في Unity

تُعد حركة الماوس السلسة جانبًا أساسيًا من جوانب تطوير الألعاب التي تساعد في تحسين تجربة المستخدم بشكل عام. من خلال تنفيذ حركة الماوس السلسة، يمكنك جعل عناصر التحكم في الكاميرا أو اللاعب في لعبتك تبدو أكثر سلاسة واستجابة، مما يؤدي إلى تجربة لعب مصقولة وغامرة. في هذا البرنامج التعليمي، سنشرح كيفية إعداد حركة الماوس السلسة في Unity، مع تعليمات خطوة بخطوة وأمثلة التعليمات البرمجية بلغة C#. سنناقش أيضًا الأسباب المحتملة التي قد تجعلك ترغب في تنفيذ هذه الميزة في ألعابك.

لماذا يجب تنفيذ حركة الماوس السلسة؟

فيما يلي بعض الأسباب التي تجعل حركة الماوس السلسة مهمة في الألعاب:

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

إعداد حركة الماوس السلسة في Unity

دعونا ننتقل إلى الخطوات لإنشاء حركة سلسة للفأرة في Unity.

الخطوة 1: إنشاء نص جديد

أولاً، قم بإنشاء نص برمجي جديد بلغة C# للتحكم في حركة الماوس. يمكنك تسمية هذا النص البرمجي بشيء مثل MouseLook.

using UnityEngine;

public class MouseLook : MonoBehaviour
{
    public float mouseSensitivity = 100f;
    public Transform playerBody;

    private float xRotation = 0f;

    void Start()
    {
        // Lock the cursor in the middle of the screen
        Cursor.lockState = CursorLockMode.Locked;
    }

    void Update()
    {
        // Get mouse movement input
        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
        float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;

        // Invert the Y-axis for a more natural control feel
        xRotation -= mouseY;
        xRotation = Mathf.Clamp(xRotation, -90f, 90f);

        // Rotate the camera around the X-axis (up and down)
        transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);

        // Rotate the player object around the Y-axis (left and right)
        playerBody.Rotate(Vector3.up * mouseX);
    }
}

في هذا الكود:

  • يتحكم mouseSensitivity في مدى حساسية إدخال الماوس.
  • يمثل playerBody تحويل اللاعب، والذي يدور على طول المحور Y للحركة الأفقية للفأرة.
  • يقوم المتغير xRotation بتخزين الدوران الرأسي الحالي (للأعلى وللأسفل)، ويتم تثبيته بين -90 و90 درجة لمنع الدوران الزائد.
  • نقوم بقفل مؤشر الماوس في منتصف الشاشة لتجنب خروج المؤشر من نافذة اللعبة.

الخطوة 2: ربط النص بالكاميرا

الآن بعد أن أصبح النص جاهزًا، انتقل إلى المشهد Unity وقم بإرفاق النص MouseLook بالكاميرا (على سبيل المثال، كائن Main Camera).

بعد ذلك، قم بتعيين حقل playerBody عن طريق سحب كائن اللاعب (عادةً وحدة تحكم الشخصية أو كائن لعبة فارغ يمثل اللاعب) إلى حقل Player Body الخاص بالنص البرمجي في Inspector.

الخطوة 3: ضبط حساسية الماوس

يمكنك إجراء التجارب باستخدام قيمة mouseSensitivity لتحقيق مستوى التحكم الذي تريده. نقطة البداية الجيدة هي 100، ولكن يمكنك ضبطها لأعلى أو لأسفل حسب مستوى الدقة المطلوب.

الخطوة 4: التعامل مع سلاسة الإدخال

للحصول على حركة أكثر سلاسة، يمكنك تطبيق الاستيفاء على قيم إدخال الماوس. وهذا يضمن انتقال الكاميرا بسلاسة بين كل إطار، بدلاً من القفز من موضع إلى آخر. فيما يلي مثال لكيفية تنفيذ ذلك:

using UnityEngine;

public class MouseLook : MonoBehaviour
{
    public float mouseSensitivity = 100f;
    public Transform playerBody;

    private float xRotation = 0f;
    private Vector2 smoothInputVelocity;
    public float smoothTime = 0.1f;
    private Vector2 currentMouseDelta;

    void Start()
    {
        Cursor.lockState = CursorLockMode.Locked;
    }

    void Update()
    {
        // Get raw mouse input
        Vector2 targetMouseDelta = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y")) * mouseSensitivity;

        // Smooth the mouse input
        currentMouseDelta = Vector2.SmoothDamp(currentMouseDelta, targetMouseDelta, ref smoothInputVelocity, smoothTime);

        xRotation -= currentMouseDelta.y * Time.deltaTime;
        xRotation = Mathf.Clamp(xRotation, -90f, 90f);

        transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
        playerBody.Rotate(Vector3.up * currentMouseDelta.x * Time.deltaTime);
    }
}

يقدم هذا الإصدار المحدث التنعيم باستخدام Vector2.SmoothDamp. يتحكم المتغير smoothTime في مدى سلاسة الانتقال. تجعل القيم المنخفضة الحركة أكثر استجابة، بينما تجعل القيم الأعلى الحركة أبطأ وأكثر تدريجية.

الخطوة 5: الاختبار والضبط الدقيق

بمجرد أن يكون لديك البرنامج النصي، اختبر اللعبة واضبط قيم الحساسية والتنعيم بناءً على مدى السلاسة التي تريدها لحركة الماوس. يمكنك أيضًا ضبط زاوية التثبيت للسماح بحرية أكبر أو أقل لحركة الكاميرا.

خاتمة

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