كيفية ترميز وحدة تحكم الأحرف القائمة على الفيزياء في Unity3D

كيفية ترميز وحدة تحكم الأحرف القائمة على الفيزياء في Unity3D
القراء مثلك يساعدون في دعم MUO. عند إجراء عملية شراء باستخدام الروابط الموجودة على موقعنا ، فقد نربح عمولة تابعة. قراءة المزيد.

يمكن أن تساعدك وحدة التحكم في الشخصية في تنفيذ فيزياء الحركة البسيطة في لعبتك.





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





الخطوة 1: إنشاء مشهد باستخدام كائنات المشغل والتضاريس

  وحدة تحكم شخصية مساحة ثلاثية الأبعاد

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





كائن مستوي ثلاثي الأبعاد للتضاريس

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

نموذج مشغل كائن مكعب

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



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

يمكنك إيجاد أصول الوحدة المجانية عبر الإنترنت لتجميل مشروعك.





كاميرا من منظور شخص ثالث

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

كيفية وضع تقويم جوجل على نظام ويندوز 10

اختبار سريع

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





الخطوة 2: قم بإعداد ملف C #

حان الوقت الآن لإنشاء ملف C # بحيث يمكنك البدء في برمجة بعض الحركة. انتقل إلى قسم المشروع ، وانقر بزر الماوس الأيمن ، وقم بالمرور فوق إنشاء ، وحدد مجلد من القائمة. اسم مجلد البرامج النصية أو شيء مشابه.

انتقل داخل مجلدك الجديد وكرر العملية ، ولكن حدد C # Script من القائمة. يمكنك إعطاء هذا الملف أي اسم ، ولكن سيكون هذا أيضًا اسم الوظيفة الرئيسية فيه. تأكد من أن C # الجديدة تبدو هكذا.

 using System.Collections; 
using System.Collections.Generic;
using UnityEngine;

public class Character_Control: MonoBehaviour {
    void Start() {
    }

    void Update() {
    }
}

الخطوة 3: استخدم C # لإنشاء حركة للأمام والخلف بالسرعة

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

 public Rigidbody rigidbody; 
public float speed;

بعد ذلك ، حان الوقت لإضافة سطر واحد من التعليمات البرمجية إلى وظيفة البدء. يستخدم هذا إعلان GetComponent لتعيين مكون الهيكل الجامد لـ Cube إلى متغير الجسم الجامد الذي قمت بإنشائه.

 void Start() { 
    rigidbody = GetComponent < Rigidbody > ();
}

يمكنك الآن إضافة بعض التعليمات البرمجية التي من شأنها تحريك نموذج المشغل الخاص بك. هذا الرمز جميل وبسيط. تحتاج فقط إلى عبارتين if ، واحدة للحركة إلى الأمام ، وواحدة للتراجع. يمكنك استخدام Input.GetKey لتحديد وقت الضغط على أحد المفاتيح. في هذه الحالة ، أنت تبحث عن مكابس للمفاتيح W و S.

الضغط على أي من هذين المفتاحين يضيف قوة إلى جسم المكعب الصلب باستخدام الجسم الصلب. يمكنك حساب اتجاه وسرعة القوة المضافة بضرب موضع المحور Z (التحويل للأمام) في متغير السرعة. لا توجد فئة تحويل للخلف يمكنك استخدامها للحركة الخلفية ، ولكن يمكن تحقيق ذلك بضرب التحويل إلى الأمام في -1.

 if (Input.GetKey("w")) { 
    rigidbody.AddForce(transform.forward * speed);
}

if (Input.GetKey("s")) {
    rigidbody.AddForce((transform.forward * -1) * speed);
}

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

يمكنك الآن استخدام زر التشغيل لبدء اللعبة واختبار الكود الخاص بك. لكن انتظر! هناك مشكلة؛ المكعب الخاص بك سوف يتدحرج بدلاً من التحرك للأمام بشكل مستقيم. ارجع إلى مفتش Cube ، وابحث عن مكون Rigidbody ، وحدد المربعات لتجميد الدوران على المحورين X و Z قبل بدء اللعبة مرة أخرى. الآن يجب أن تعمل.

الخطوة 4: استخدم C # لإنشاء انعطاف يمين ويسار مع عزم الدوران

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

 public float torque;

رمز الانعطاف إلى اليسار واليمين في هذا البرنامج النصي مشابه جدًا لتلك المستخدمة للتقدم للأمام وللخلف أيضًا. هناك إذا بيان لكل اتجاه يبحث عن مكابس إما مفتاح D (انعطاف يمين) أو مفتاح A (انعطاف يسار).

الخطوة الأولى في كل عبارة if هي تحديد اتجاه الدوران باستخدام طريقة Input.GetAxis وتعيين النتيجة إلى متغير عائم. بعد ذلك ، استخدم hardbody.AddTorque لتطبيق قوة الدوران على نموذج حرف المكعب بضرب عزم الدوران ، والانعطاف ، والمحور Z للمكعب.

 if (Input.GetKey("d")) { 
    float turn = Input.GetAxis("Horizontal");
    rigidbody.AddTorque(transform.up * torque * turn);
}

if (Input.GetKey("a")) {
    float turn = Input.GetAxis("Horizontal");
    rigidbody.AddTorque(transform.up * torque * turn);
}

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

الخطوة 5: استخدم C # لبرمجة القفز

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

 private bool isJumping = false;

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

 if (!isJumping) { 
}

إضافة نفس الشرط إلى الحركة الأخرى إذا كانت العبارات ستمنع اللاعب من التحرك أثناء القفزات.

مقارنة الملفات في برنامج notepad ++
 if (Input.GetKey("w") && !isJumping) { 
    rigidbody.AddForce(transform.forward * speed);
}

ضمن جملة! isJumping if ، تحتاج إلى عبارة if أخرى ، هذه المرة للتحقق من الضغط على زر القفز. يعد ضبط متغير isJumping على القيمة true هو أول شيء يجب القيام به في عبارة if هذه ، متبوعًا بإنشاء إعلان صلب على شكل مستطيل لإزالة القوى المطبقة حاليًا على المكعب.

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

 if (!isJumping) { 
    if (Input.GetKeyDown("space")) {
        isJumping = true;
        rigidbody.AddForce(transform.up * speed * 120);
        rigidbody.angularVelocity = Vector3.zero;
        Invoke("Move_Setter", 0.8 f);
    }
}

تعيّن هذه الوظيفة المتغير isJumping إلى false بحيث تصبح الحركة / القفز ممكنة مرة أخرى ، ويؤدي التأخير البالغ 0.8 ثانية إلى منعه من الانطلاق في وقت قريب جدًا.

 void Move_Setter() { 
    isJumping = false;
}

الخطوة 6: اختبر رمز وحدة التحكم في الأحرف الخاصة بك

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

إنشاء وحدات تحكم شخصية الوحدة

يمكنك الاختيار من بين مجموعة متنوعة من الأساليب المختلفة عند إنشاء وحدة تحكم شخصية في Unity. يعد استخدام الفيزياء أحد الخيارات ، ولكن يمكنك أيضًا استخدام نظام التحكم في الأحرف المدمج إذا كنت تريد ذلك.

يعد استكشاف خيارات مختلفة مثل هذه طريقة رائعة للتعرف على أدوات مثل Unity.