كيفية استخدام المخططات في Unreal Engine 4

في هذا البرنامج سوف نتعلم كيفية استخدام المخططات (blueprints) في الإصدار الرابع من أنريل إينجن (Unreal Engine 4) لإنشاء شخصية لاعب، وإعداد المدخلات وجعل عنصر يختفي عندما يلمسه اللاعب.

المخططات (Blueprints) – هي عبارة عن نظام البرمجة النصية المرئي داخل الإصدار الرابع من أنريل إينجن (Unreal Engine 4)، وهي طريقة سريعة لبدء النماذج الأولية للعبة التي تريد تصميمها.

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

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

في هذا البرنامج التعليمي، سوف تستخدم المخططات (Blueprints) من أجل:

  1. إعداد كاميرا من أعلى لأسفل
  2. إنشاء ممثل يتحكم فيه اللاعب بحركة أساسية
  3. إعداد مدخلات اللاعب
  4. إنشاء عنصر يختفي عندما يلمسه اللاعب

ملاحظة: قبل البدء بهذا البرنامج التعليمي يجب أن تعرف كيفية التنقل في واجهة الإصدار الرابع من أنريل إينجن (Unreal Engine 4)، ويجب أن يكون لديك إلمام بمفاهيم المخطط (Blueprint) الأساسية مثل المكونات والعقد.

وإذا كنت بحاجة إلى تجديد معلومات، فراجع البرنامج التعليمي للمبتدئين لـ Unreal Engine 4.

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

البداية

قم بتنزيل مشروع البداية وفك ضغطه، ولفتح المشروع، انتقل إلى مجلد المشروع وافتح BananaCollector.uproject.

ملاحظة:

إذا تلقيت رسالة تفيد بأن المشروع قد تم إنشاؤه باستخدام إصدار سابق من محرر أنريل (Unreal editor)، فلا داعي للقلق حيث أنه سوف يتم تحديث المحرك بشكل متكرر، ويمكنك إما اختيار خيار فتح نسخة (open a copy)، أو خيار التحويل في المكان (convert in place).

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

مشهد

لاحظ أنه تم تصنيف ملفات المشروع إلى مجلدات لتسهيل التنقل، كما ترى هنا:

تصنيف مجلدات

ويمكنك استخدام الزر المميز باللون الأحمر أعلاه لإظهار أو إخفاء لوحة المصادر إذا كنت ترغب في ذلك.

إنشاء اللاعب (Creating the Player)

في مستعرض المحتوى، انتقل إلى مجلد المخططات (Blueprints)، ثم انقر فوق الزر (Add New) وحدد مخطط الطبقة (Blueprint Class).

وباعتبار أن التصميم المطلوب، يجب أن يكون اللاعب قادراً على تلقي المدخلات، فإن فئة البيدق (Pawn class) مناسبة، ولذلك حدد (Pawn) من النافذة المنبثقة وقم بتسميته (BP_Player).

إنشاء اللاعب

ملاحظة:

سيتم أيضاً استخدام فئة المحارف (Character class)، حيث أنه يتضمن مكون حركة بشكل افتراضي، ومع ذلك، سوف تقوم بتنفيذ نظام الحركة الخاص بك بحيث تكون فئة البيدق (Pawn class) كافية.

إرفاق كاميرا (Attaching a Camera)

الكاميرا هي طريقة اللاعب للنظر إلى العالم، وسوف تقوم بإنشاء كاميرا تتجه لأسفل بالنسبة للزاوية التي ينظر منها المشغل.

في متصفح المحتوى، انقر نقراً مزدوجاً فوق BP_Player لفتحه في محرر المخطط (Blueprint editor).

ومن أجل إنشاء الكاميرا، عليك الانتقال إلى لوحة المكونات (Components panel)، وانقر فوق إضافة مكون (Add Component) وحدد الكاميرا (Camera).

إرفاق كاميرا (Attaching a Camera)

ولكي تعرض الكاميرا مشهد من أعلى لأسفل، يجب أن تضعها فوق اللاعب، مع تحديد مكون الكاميرا، وانتقل إلى علامة التبويب منفذ العرض (Viewport tab).

بعد ذلك، قم بتنشيط ناقل الحركة بالضغط على مفتاح W ثم انقله إلى (-1100، 0، 2000)، ويمكن استبدال هذه الخطوة من خلال كتابة الإحداثيات في حقول الموقع الموجودة ضمن قسم التحويل (Transform section) في لوحة التفاصيل (Details panel).

كاميرا

وإذا فقدت رؤية الكاميرا، اضغط على مفتاح F للتركيز عليها.

وبعد ذلك، قم بتنشيط محاور الدوران بالضغط على المفتاح E، وقم بتدوير الكاميرا لأسفل إلى -60 درجة على المحور (Y).

تركيز الكاميرا

تمثيل اللاعب (Representing the Player)

المكعب الأحمر سوف يمثل اللاعب، لذا ستحتاج إلى استخدام مكون شبكة ثابتة (Static Mesh) لعرضه.

أولاً، قم بإلغاء تحديد مكون الكاميرا بالنقر بزر الماوس الأيسر فوق مساحة فارغة في لوحة المكونات (Components panel)، وإذا لم تقم بذلك، فسيكون المكون المضاف التالي تابعاً للكاميرا.

بعد ذلك انقر فوق إضافة مكون (Add Component) وحدد شبكة ثابتة (Static Mesh).

تمثيل اللاعب (Representing the Player)

ولعرض المكعب الأحمر، حدد المكون (Static Mesh) ثم انتقل إلى علامة التبويب (Details)، وبعدها انقر فوق القائمة المنسدلة الموجودة على يمين (Static Mesh) وحدد (SM_Cube).

تمثيل اللاعب 2

بعد ذلك يجب أن يظهر لك المشهد الموضح بالصورة أدناه (يمكنك الضغط على F داخل منفذ العرض للتركيز إذا لم يظهر لديك المشهد):

مكعب أحمر

الآن، حان الوقت لتنزيل بيدق اللاعب (player Pawn)، ومن أجل ذلك انقر فوق (Compile) وارجع إلى المحرر الرئيسي.

إنشاء بيدق اللعب (Spawning the Player)

قبل أن يتمكن المشغل من التحكم في بيدق اللعب، عليك تحديد شيئين:

  1. فئة البيدق التي يتحكم فيها المشغل.
  2. المساحة التي يتم تنزيل بيدق اللعب فيها.

ويمكنك تحقيق فئة البيدق من خلال إنشاء فئة جديدة في وضع اللعبة (Game Mode class).

إنشاء وضع اللعبة (Creating a Game Mode)

وضع اللعبة هو فئة تتحكم في كيفية دخول اللاعب إلى اللعبة، على سبيل المثال، في لعبة متعددة اللاعبين، يمكنك استخدام (Game Mode) لتحديد مكان تواجد كل لاعب ضمن اللعبة، والأهم من ذلك، يحدد وضع اللعبة بيدق اللعب الذي سيستخدمه المشغل.

انتقل إلى مستعرض المحتوى وتأكد من أنك في مجلد المخططات (Blueprints)، ثم انقر فوق الزر (Add New) وحدد (Blueprint Class).

بعد ذلك، من النافذة المنبثقة، حدد (Game Mode Base) وقم بتسميتها (GM_Tutorial).

إنشاء وضع اللعبة (Creating a Game Mode)

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

بعد ذلك انتقل إلى لوحة التفاصيل (Details panel) وانظر أسفل قسم الفئات (Classes section)، وبعد ذلك انقر فوق القائمة المنسدلة لفئة البيدق الافتراضية وحدد (BP_Player).

تحديد فئة بيدق اللعب

وقبل أن تتمكن من استخدام وضع اللعب الجديد الخاص بك، يحتاج المستوى إلى معرفة وضع اللعبة الذي يجب استخدامه، ويمكنك تحديد هذا في إعدادات العالم (World Settings)، انقر فوق (Compile) وأغلق محرر المخطط (Blueprint editor).

حيث أن كل مستوى له إعداداته الخاصة، ويمكنك الوصول إلى الإعدادات عن طريق تحديد (Window \ World Settings)، أو يمكنك الانتقال إلى شريط الأدوات (Toolbar) وتحديد الإعدادات \ إعدادات العالم (Settings\World Settings).

إعدادات العالم

سيتم فتح علامة تبويب إعدادات العالم الجديدة بجوار علامة التبويب تفاصيل (Details)، ومنها قم بالنقر فوق القائمة المنسدلة لـ GameMode Override وحدد GM_Tutorial.

إعدادات العالم 2

وستلاحظ الآن أن الطبقات قد تغيرت إلى تلك المحددة في GM_Tutorial.

وضع اللعبة

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

تحديد مكان بداية اللعب (Placing the Player Start)

أثناء عملية إنتاج اللاعب، يبحث وضع اللعبة (Game Mode) عن موضع بداية اللعب، وإذا وجد وضع اللعبة واحداً، فسيحاول إنتاج اللاعب هناك.

ولتحديد موضع بداية اللعب، انتقل إلى لوحة الأوضاع وابحث عن (Player Start)، ثم انقر بزر الماوس الأيسر واسحب (Player Start) من لوحة الأوضاع (Modes panel) إلى منفذ العرض (Viewport) ثم تحرير النقر بالزر الأيسر.

تحديد مكان بداية اللعب (Placing the Player Start)

ويمكنك تحدد بداية اللعب في أي مكان تريد، وعند الانتهاء، انتقل إلى شريط الأدوات (Toolbar) وانقر فوق تشغيل (Play)، وسوف تولد حيث وضعت “بداية اللعب”.

بداية اللعب

وللخروج من اللعبة، انقر فوق الزر إيقاف (Stop) في شريط الأدوات (Toolbar) أو اضغط على مفتاح (Esc)، وإذا لم تتمكن من رؤية المؤشر، فاضغط على (Shift + F1).

إعداد المدخلات (Setting Up Inputs)

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

إعداد المدخلات (Setting Up Inputs)

تعد طريقة ربط المفاتيح هذه مفيدة لأنها تعني أنك لست مضطراً إلى مفاتيح التعليمات البرمجية الثابتة.

وعلى سبيل المثال، يمكنك ربط النقر بزر الماوس الأيسر وتسميته (Shoot)، ويمكن لأي ممثل التصوير استخدام حدث (Shoot) لمعرفة وقت قيام اللاعب بالضغط على الزر الأيسر، وإذا كنت ترغب في تغيير المفتاح، يمكنك تغييره في إعدادات الإدخال.

المدخلات 2

وإذا كنت قد قمت بترميزها بشكل ثابت، فسيتعين عليك المرور عبر كل ممثل وتغيير المفاتيح بشكل فردي.

تعيين المحاور والإجراءات

لعرض إعدادات الإدخال، انتقل إلى تحرير \ إعدادات (Edit\Project Settings) المشروع، وعلى اليسار، حدد الإدخال ضمن قسم إينجن (Engine).

إعدادات الإدخال

قسم الروابط هو المكان الذي ستقوم فيه بإعداد المدخلات الخاصة بك.

قسم الروابط

يوفر أنريل (Unreal) طريقتين لإنشاء روابط المفاتيح:

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

وفي هذا البرنامج التعليمي، سوف يتم استخدام تعيينات المحاور.

إنشاء مخططات الحركة (Creating Movement Mappings)

في البداية سوف يتم إنشاء مجموعتين لتخطيط المحاور، تسمح تلك المجموعات بربط مفاتيح متعددة بحدث واحد.

ولإنشاء مجموعة تعيين محور جديدة، انقر فوق علامة + الموجودة على يمين تعيينات المحور (Axis Mappings)، وقم بإنشاء مجموعتين وقم بتسميتهما MoveForward و MoveRight.

مخططات الحركة

ستتولى مجموعة (MoveForward) التحرك للأمام وللخلف، وستتعامل مجموعة (MoveRight) مع تحريك اليسار واليمين.

وستقوم بربط الحركة مع أربعة مفاتيح: W و A و S و D، وحالياً، هناك فتحتان فقط لتعيين المفاتيح، أضف تعيين محور آخر لكل مجموعة بالنقر فوق علامة + بجوار حقل اسم المجموعة.

مخططات الحركة.png 2

ولتعيين مفتاح، انقر فوق القائمة المنسدلة لإظهار قائمة المفاتيح، وقم بتعيين مفتاحي W و S على MoveForward, وتعيين مفتاحي A و D إلى MoveRight.

تعيين مفتاح

وبعد ذلك، ستقوم بتعيين حقول المقياس.

قيمة المحور ومقياس الإدخال (Axis Value and Input Scale)

قبل تعيين حقول المقياس، تحتاج إلى التعرف على كيفية عملها مع قيم المحور.

قيمة المحور هي قيمة عددية يتم تحديدها حسب نوع الإدخال وكيفية استخدامه، ويتم إخراج الأزرار والمفاتيح 1 عند الضغط عليها، وتُخرج عصي الإبهام قيمة بين -1 و1 اعتماداً على الاتجاه وإلى أي مدى تدفعه.

قيمة المحاور

يمكنك استخدام قيمة المحور للتحكم في سرعة بيدق اللعب، على سبيل المثال، إذا قمت بدفع عصا التحكم إلى الحافة، فستكون قيمة المحور 1، وإذا قمت بدفعها إلى المنتصف، فستكون 0.5.

وبضرب قيمة المحور بمتغير سرعة، يمكنك ضبط السرعة باستخدام عصا التحكم.

قيمة المحاور 2

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

قيم المحاور 3

ونظراً لأن مفاتيح لوحة المفاتيح يمكنها فقط إخراج قيمة محور 1 أو 0، يمكنك استخدام مقياس لتحويلها إلى قيمة سالبة، حيث يعمل بأخذ قيمة المحور وضربها بالمقياس.

فإذا قمت بضرب موجب (قيمة المحور) مع سالب (المقياس)، ستحصل على سالب.

اضبط مقياس مفاتيح S و A بالنقر فوق حقل (Scale) وإدخال -1.

تعيين المحاور

وبعد ذلك، يأتي الجزء الممتع، وهو تحريك بيدق اللعب، أغلق إعدادات المشروع ثم افتح BP_Player في محرر المخططات (Blueprints editor) بالنقر المزدوج عليه.

تحريك بيدق اللعب (Moving the Player)

أولاً، تحتاج إلى الحصول على الأحداث لتعيينات حركتك، انقر بزر الماوس الأيمن فوق مساحة فارغة في مخطط الأحداث للحصول على قائمة بالعقد، ومن القائمة، ابحث عن MoveForward.

أضف عقدة MoveForward المدرجة ضمن أحداث المحور، ولاحظ أنك تبحث عن العقدة الحمراء ضمن أحداث المحور، وليس العقدة الخضراء ضمن قيم المحور.

كرر العملية مع MoveRight.

تحريك بيدق اللعب

الآن، ستقوم بإعداد العقد لـ MoveForward.

استخدام المتغيرات (Using Variables)

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

ولإنشاء واحدة، انتقل إلى علامة التبويب My Blueprint وانقر فوق علامة + الموجودة على يمين قسم المتغيرات.

استخدام المتغيرات (Using Variables)

بعد تحديد المتغير الجديد، توجه إلى علامة التبويب التفاصيل (Details) وأعد تسمية المتغير إلى MaxSpeed.

وبعد ذلك، قم بتغيير نوع المتغير إلى Float، وقم بذلك عن طريق النقر فوق القائمة المنسدلة بجوار نوع المتغير وتحديد عائم.

استخدام المتغيرات (Using Variables).png 2

بعد ذلك، تحتاج إلى تعيين القيمة الافتراضية، وقبل أن تتمكن من تعيينها تحتاج إلى النقر فوق (Compile) في شريط الأدوات.

مع استمرار تحديد المتغير الخاص بك، ارجع إلى علامة التبويب التفاصيل (Details)، وانتقل إلى قسم القيمة الافتراضية (Default Value) وقم بتغيير القيمة الافتراضية لـ MaxSpeed إلى 10.

المتغيرات

بعد ذلك، انقر فوق المتغير (MaxSpeed) من علامة التبويب (My Blueprint) في مخطط الأحداث (Event Graph)، وحدد (Get) من القائمة.

ستقوم الآن بضرب MaxSpeed وقيمة المحور لتحديد السرعة والاتجاه النهائيين، أضف عقدة عائمة * وقم بتوصيل قيمة المحور وMaxSpeed بها.

متغيرات 21

الحصول على اتجاه بيدق اللعب (Getting the Player Direction)

للمضي قدماً، تحتاج إلى معرفة مكان مواجهة البيدق، ولحسن الحظ، أنريل (Unreal) لديه عقدة لهذا الغرض، أضف عقدة Get Actor Forward Vector.

الحصول على اتجاه بيدق اللعب (Getting the Player Direction)

بعد ذلك، أضف عقدة إضافة إدخال الحركة (Add Movement Input)، وستأخذ هذه العقدة اتجاهاً وقيمة وستحولها إلى إزاحة مخزنة، وقم بتوصيل العقد كما يلي:

الحصول على اتجاه بيدق اللعب (Getting the Player Direction)2

يمثل الخط الأبيض سلسلة تنفيذ، بمعنى آخر، عندما يقوم اللاعب بتحريك محور الإدخال، سيتم إنشاء حدث يقوم بتنفيذ عقدة InputAxis MoveForward، ويمثل الخط الأبيض أنه بمجرد حدوث ذلك، سيتم تنفيذ عقدة إضافة إدخال الحركة (Add Movement Input).

تأخذ عقدة إضافة إدخال الحركة (Add Movement Input) المدخلات التالية:

  1. الهدف (Target): ضبط على الذات، وهو في هذه الحالة اللاعب (المربع الأحمر).
  2. الاتجاه العالم (World Direction): الاتجاه الذي يتحرك به الهدف، وهو في هذه الحالة الاتجاه الذي يواجهه اللاعب.
  3. قيمة المقياس (Scale Value): مقدار تحريك اللاعب، وهو في هذه الحالة السرعة القصوى مضروبة بقيمة المحور (التي تتراوح قيمتها ضمن النطاق من -1 إلى 1).

كرر العملية لـ MoveRight ولكن استبدل Get Actor Forward Vector بـ Get Actor Right Vector، وتعرف على مقدار ما يمكنك القيام به بنفسك دون مراجعة التعليمات أعلاه!

إدخال الحركة

إضافة الإزاحة (Adding the Offset)

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

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

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

إزاحة

للحصول على الإزاحة، قم بإنشاء عقدة (Consume Movement Input Vector)، ولإضافة الإزاحة، قم بإنشاء عقدة (AddActorLocalOffset)، وبعد ذلك، اربطهم على النحو التالي:

إزاحة

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

انقر فوق (Compile)، وارجع إلى المحرر الرئيسي وانقر فوق (Play)، وستتمكن الآن من التحرك!

إطارات وحركة

ولكن هناك مشكلة صغيرة واحدة تتمثل بأنه يمكن للآلات عالية الجودة عرض الإطارات بمعدل أسرع.

ونظراً لأن Event Tick توجد في كل إطار، فسيتم تنفيذ عقد الحركة في كثير من الأحيان، وينتج عن هذا تحرك البيدق بمعدل أسرع على الآلات المتطورة والعكس صحيح.

لإصلاح ذلك، يجب أن تكون الحركة مستقلة عن معدل الإطارات.

استقلالية معدل الإطار (Frame Rate Independence)

تعني استقلالية معدل الإطارات أن كل شيء سيكون له نفس النتيجة، بغض النظر عن معدل الإطارات، ولحسن الحظ، فإن تحقيق استقلالية معدل الإطارات في أنريل (Unreal) أمر سهل.

قم بالخروج من اللعبة ثم افتح (BP_Player)، وبعد ذلك، انتقل إلى عقدة (Event Tick) وألق نظرة على (Delta Seconds).

معدل الإطار

Delta Seconds هو مقدار الوقت المنقضي منذ آخر علامة للحدث، وبضرب تعويضك بـ Delta Seconds، ستكون حركتك مستقلة عن معدل الإطارات.

على سبيل المثال، يبلغ الحد الأقصى لسرعة البيدق الخاص بك 100 وحدة، وإذا مرت ثانية واحدة منذ آخر علامة حدث، فإن البيدق الخاص بك سيحرك 100 وحدة كاملة، وإذا مرت نصف ثانية، فسوف يتحرك 50 وحدة.

معدل الإطار 2

أما إذا كانت الحركة تعتمد على معدل الإطارات، فسيقوم البيدق بتحريك 100 وحدة في كل إطار، بغض النظر عن الوقت بين الإطارات.

لمضاعفة إزاحتك بـ (Delta Seconds)، أضف عقدة عائمة مضروبة بالاتجاه، وبعد ذلك، قم بتوصيل العقد الخاصة بك كما يلي:

مخطط العقد

نظراً لأن الوقت بين الإطارات (Delta Seconds) صغير جداً، فإن البيدق الخاص بك سوف يتحرك بشكل أبطأ كثيراً، لذلك قم بإصلاح هذا الأمر عن طريق تغيير القيمة الافتراضية لـ MaxSpeed إلى 600.

إطار

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

اصطدامات بيدق اللعب (Actor Collisions)

عندما تفكر في حدوث تصادم، ربما تفكر في اصطدام السيارات ببعضها البعض، ولحسن الحظ، فإن الاصطدامات في أنريل (Unreal) أكثر أماناً.

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

  1. شبكة التصادم (Collision mesh): يتم إنشاؤها تلقائياً (إذا قمت بتمكينها) عند استيراد شبكة، ويمكن للمستخدم أيضاً إنشاء شبكة تصادم مخصصة باستخدام برنامج ثلاثي الأبعاد، ويحتوي المربع الأحمر بالفعل على شبكة تصادم تم إنشاؤها تلقائياً.
  2. مكون الاصطدام (Collision component): يأتي في ثلاثة أشكال، صندوق، كبسولة وكرة، ويمكنك إضافتها من خلال لوحة المكونات، وتستخدم بشكل عام للتصادم البسيط.

يوجد أدناه مثال على شخصية وتصادمها.

اصطدام1

يحدث التصادم عندما يلامس تصادم أحد الشخصيات تصادم ممثل آخر.

تصادم

تمكين الاصطدام (Enabling Collision)

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

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

ولذلك، لاستخدام شبكة التصادم، يجب أن يكون الشبكة الثابتة (Static Mesh) هو الجذر، وللقيام بذلك، انتقل إلى لوحة المكونات، وبعد ذلك، انقر بزر الماوس الأيسر واسحب الشبكة الثابتة (Static Mesh) إلى DefaultSceneRoot، وحرر زر النقر الأيسر لجعل الشبكة الثابتة (Static Mesh) هو الجذر الجديد.

تمكين الاصطدام (Enabling Collision)

وهناك شيء آخر يجب القيام به قبل أن تنجح التصادمات، عليك القيان بالتبديل إلى (Event Graph) والانتقال إلى عقدة (AddActorLocalOffset)، وتحديد موقع إدخال المسح (Sweep) واضبطه على (true) بالنقر بزر الماوس الأيسر فوق مربع الاختيار.

تمكين الاصطدام (Enabling Collision)1

وبشكل أساسي، ينقل AddActorLocalOffset البيدق إلى موقع جديد، ويتأكد (Sweep) من اصطدام البيدق بأي شيء يقع بين الموقعين القديم والجديد.

ارجع إلى المحرر الرئيسي وانقر فوق تشغيل (Play)، سيصطدم المكعب الآن بالمستوى.

اصطدام

إنشاء عنصر (Creating an Item)

بشكل عام، العنصر هو أي شيء يمكن للاعب جمعه، وسوف تستخدم BP_Banana كعنصر.

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

تحدد استجابة الاصطدام أيضاً كيف يتفاعل البيدق عند الاصطدام مع بيدق آخر، وهناك ثلاثة أنواع من استجابات التصادم (التجاهل والتداخل والحظر)، وإليك كيفية تفاعلهم مع بعضهم البعض:

العنصر

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

ضبط الاستجابة للتصادم (Setting the Collision Response)

اخرج من اللعبة ثم افتح BP_Banana، وحدد مكون (Static Mesh) ثم انتقل إلى لوحة التفاصيل (Details panel)، وقسم التصادم (Collision section) هو المكان الذي ستضبط فيه استجابة التصادم.

استجابة التصادم

كما ترى، فإن معظم الإعدادات معطلة، ولجعلها قابلة للتحرير، انقر بزر الماوس الأيسر فوق القائمة المنسدلة بجوار (Collision Presets)، وحدد مخصص (Custom) من القائمة.

ضبط التصادم

الآن، تحتاج إلى تحديد استجابة التصادم بين العنصر والمكعب.

المكونات لها سمة تسمى نوع الكائن، ونوع الكائن هو مجرد طريقة مناسبة لتجميع الممثلين المتشابهين معاً.

ونظراً لأن نوع المكعب هو World Dynamic، فأنت تريد تغيير استجابة الاصطدام لهذا النوع، ضمن قسم (Collision Responses)، قم بتغيير استجابة التصادم الخاصة بـ World Dynamic إلى (Overlap)، وقم بذلك عن طريق النقر بزر الماوس الأيسر على مربع الاختيار الأوسط على يمين World Dynamic.

تصادم استجابة

التعامل مع الاصطدام (Handling Collision)

للتعامل مع الاصطدام، تحتاج إلى استخدام حدث تداخل، انتقل إلى لوحة المكونات (Components pane) وانقر بزر الماوس الأيمن على Static Mesh، ومن قائمة السياق (context)، حدد Add Event \ Add OnComponentBeginOverlap.

التعامل مع التصادم

وهذا سيؤدي إلى إضافة عقدة OnComponentBeginOverlap (StaticMesh) إلى مخطط الأحداث (Event Graph).

الشبكة الثابتة

أخيراً، قم بإنشاء عقدة Destroy Actor واربطها بعقدة OnComponentBeginOverlap (Static Mesh).

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

عقدة Destroy Actor

وضع العنصر (Placing the Item)

أغلق محرر المخطط (Blueprint editor) ثم تأكد من أنك في مجلد المخططات.

وابدأ في وضع الموز في المستوى عن طريق النقر بزر الماوس الأيسر وسحب BP_Banana إلى منفذ العرض (Viewport).

وضع العنصر

انقر فوق تشغيل (Play) وابدأ في جمع الموز!

جمع العناصر
المصدر
هنا

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني.