إنشاء وحدة تحكم الشخص الأول في Unity
سيرشدك هذا البرنامج التعليمي خلال بناء وحدة تحكم بسيطة من منظور الشخص الأول في Unity. تتيح وحدة التحكم من منظور الشخص الأول للاعبين استكشاف عالم ثلاثي الأبعاد بحركة سلسة ودوران الكاميرا. سنستخدم برمجة نصية أساسية بلغة C# ومكون CharacterController المدمج في Unity.
1. إعداد المشهد
ابدأ بإعداد بيئة المشهد الأساسية لوحدة التحكم الخاصة بك من منظور الشخص الأول:
- في Unity، قم بإنشاء مشهد ثلاثي الأبعاد جديد.
- انتقل إلى GameObject > 3D Object > Plane لإنشاء سطح أرضي.
- قم بضبط مقياس الطائرة لجعلها كبيرة بما يكفي ليتمكن اللاعب من المشي حولها.
- انتقل إلى GameObject > 3D Object > Cube لإضافة عقبات أو جدران للتفاعل معها.
2. إضافة كائن اللاعب
لتمثيل اللاعب، سوف نستخدم كائن الكبسولة:
- انتقل إلى GameObject > 3D Object > Capsule لإضافة كبسولة إلى المشهد.
- ضع الكبسولة فوق الأرض قليلاً (على سبيل المثال، الموضع = (0، 1، 0)).
- قم بإعادة تسمية الكبسولة إلى Player.
- قم بإزالة مكون Capsule Collider نظرًا لأن CharacterController سوف يتعامل مع الاصطدامات.
- قم بإضافة مكون CharacterController إلى كائن المشغل عن طريق تحديد المشغل، ثم النقر فوق إضافة مكون في المفتش والبحث عن CharacterController.
3. كتابة نص وحدة التحكم من منظور الشخص الأول
الآن، دعنا ننشئ نصًا للتعامل مع حركة اللاعب ودوران الكاميرا:
- في نافذة المشروع، انقر بزر الماوس الأيمن وحدد Create > C# Script. قم بتسميته FirstPersonController.
- قم بإرفاق البرنامج النصي إلى كائن المشغل عن طريق سحبه من نافذة المشروع إلى المشغل في التسلسل الهرمي.
افتح البرنامج النصي واستبدل المحتويات بالكود التالي:
using UnityEngine;
public class FirstPersonController : MonoBehaviour
{
public float moveSpeed = 5f;
public float mouseSensitivity = 2f;
public float gravity = -9.81f;
private CharacterController controller;
private Vector3 velocity;
private Transform cameraTransform;
void Start()
{
controller = GetComponent();
cameraTransform = Camera.main.transform;
cameraTransform.position = new Vector3(transform.position.x, transform.position.y + 1.5f, transform.position.z);
cameraTransform.parent = transform; // Attach camera to player
}
void Update()
{
// Player movement
float moveX = Input.GetAxis("Horizontal") * moveSpeed;
float moveZ = Input.GetAxis("Vertical") * moveSpeed;
Vector3 move = transform.right * moveX + transform.forward * moveZ;
controller.Move(move * Time.deltaTime);
// Apply gravity
if (controller.isGrounded && velocity.y < 0)
{
velocity.y = -2f;
}
velocity.y += gravity * Time.deltaTime;
controller.Move(velocity * Time.deltaTime);
// Camera rotation
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity;
float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity;
transform.Rotate(Vector3.up * mouseX);
cameraTransform.Rotate(Vector3.left * mouseY);
}
}
4. تركيب الكاميرا
بالنسبة لعرض الشخص الأول، يجب أن تكون الكاميرا متصلة باللاعب:
- حدد الكاميرا الرئيسية في التسلسل الهرمي.
- ضعه فوق كائن اللاعب قليلاً (على سبيل المثال، Y = 1.5).
- اسحب الكاميرا إلى كائن اللاعب في التسلسل الهرمي لجعلها تابعة للاعب. سيؤدي هذا إلى جعلها تتبع حركات اللاعب ودورانه.
5. تكوين المدخلات
يستخدم مدير الإدخال في Unity أسماء محاور محددة مسبقًا مثل "أفقي" و"رأسي" للحركة، بالإضافة إلى "ماوس X" و"ماوس Y" لإدخال الماوس. يتم تكوين هذه الأسماء تلقائيًا، ولكن يمكنك ضبط الحساسية في Edit > Project Settings > Input Manager.
6. اختبار وحدة التحكم
الآن بعد أن أصبحت وحدة التحكم الخاصة بالشخص الأول جاهزة، اضغط على زر التشغيل لاختبارها:
- استخدم W، A، S، D لتحريك اللاعب للأمام، وللخلف، وللجانبين.
- حرك الماوس لتدوير الكاميرا والنظر حولك.
- تأكد من أن الجاذبية تعمل عن طريق النزول من أي أجسام مرتفعة لمعرفة ما إذا كان اللاعب يسقط بشكل طبيعي.
7. تحسين وحدة التحكم
يمكنك تحسين وحدة التحكم الخاصة بالشخص الأول بشكل أكبر عن طريق إضافة:
- وظيفة الركض السريع عن طريق زيادة سرعة التحرك عند الضغط على مفتاح التحويل.
- منطق القفز عن طريق الكشف عن وقت ضغط اللاعب على مفتاح المسافة وتطبيق سرعة تصاعدية.
- آليات التسلق أو الانحناء للتفاعلات الأكثر تعقيدًا للاعب مع البيئة.
خاتمة
باستخدام وحدة التحكم الأساسية هذه، أصبح لديك الآن إعداد وظيفي للاعب لاستكشاف البيئات ثلاثية الأبعاد. من خلال تخصيص النص وتوسيعه، يمكنك إضافة المزيد من الميزات والتفاعلات لتناسب احتياجات لعبتك.