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

في هذا البرنامج سوف نتعلم كيفية استخدام المخططات (blueprints) في الإصدار الرابع من أنريل إينجن (Unreal Engine 4) لإنشاء شخصية لاعب، وإعداد المدخلات وجعل عنصر يختفي عندما يلمسه اللاعب.
المخططات (Blueprints) – هي عبارة عن نظام البرمجة النصية المرئي داخل الإصدار الرابع من أنريل إينجن (Unreal Engine 4)، وهي طريقة سريعة لبدء النماذج الأولية للعبة التي تريد تصميمها.
ويأتي ذلك بدلاً من الاضطرار إلى كتابة التعليمات البرمجية سطر سطر، حيث يمكنك فعل كل شيء بصرياً، وسحب العقد وإفلاتها، وتعيين خصائصها في واجهة المستخدم، وسحب الأسلاك لتحقيق الاتصال.
وبالإضافة إلى كون المخططات (Blueprints) أداة إعداد نماذج أولية سريعة، فإنها تسمح لغير المبرمجين البدء في التصميم والبدء في البرمجة النصية.
في هذا البرنامج التعليمي، سوف تستخدم المخططات (Blueprints) من أجل:
- إعداد كاميرا من أعلى لأسفل
- إنشاء ممثل يتحكم فيه اللاعب بحركة أساسية
- إعداد مدخلات اللاعب
- إنشاء عنصر يختفي عندما يلمسه اللاعب
ملاحظة: قبل البدء بهذا البرنامج التعليمي يجب أن تعرف كيفية التنقل في واجهة الإصدار الرابع من أنريل إينجن (Unreal Engine 4)، ويجب أن يكون لديك إلمام بمفاهيم المخطط (Blueprint) الأساسية مثل المكونات والعقد.
وإذا كنت بحاجة إلى تجديد معلومات، فراجع البرنامج التعليمي للمبتدئين لـ Unreal Engine 4.
ويستخدم هذا البرنامج التعليمي أيضاً للناقلات بشكل أساسي، لذلك يجب أيضاً أن يكون هناك إلمام حول التعامل مع المتجهات.
- البداية
- إنشاء اللاعب (Creating the Player)
- إرفاق كاميرا (Attaching a Camera)
- تمثيل اللاعب (Representing the Player)
- إنشاء بيدق اللعب (Spawning the Player)
- إعداد المدخلات (Setting Up Inputs)
- إنشاء مخططات الحركة (Creating Movement Mappings)
- تحريك بيدق اللعب (Moving the Player)
- اصطدامات بيدق اللعب (Actor Collisions)
- إنشاء عنصر (Creating an Item)
البداية
قم بتنزيل مشروع البداية وفك ضغطه، ولفتح المشروع، انتقل إلى مجلد المشروع وافتح 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).

ولكي تعرض الكاميرا مشهد من أعلى لأسفل، يجب أن تضعها فوق اللاعب، مع تحديد مكون الكاميرا، وانتقل إلى علامة التبويب منفذ العرض (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).

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

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

الآن، حان الوقت لتنزيل بيدق اللاعب (player Pawn)، ومن أجل ذلك انقر فوق (Compile) وارجع إلى المحرر الرئيسي.
إنشاء بيدق اللعب (Spawning the Player)
قبل أن يتمكن المشغل من التحكم في بيدق اللعب، عليك تحديد شيئين:
- فئة البيدق التي يتحكم فيها المشغل.
- المساحة التي يتم تنزيل بيدق اللعب فيها.
ويمكنك تحقيق فئة البيدق من خلال إنشاء فئة جديدة في وضع اللعبة (Game Mode class).
إنشاء وضع اللعبة (Creating a Game Mode)
وضع اللعبة هو فئة تتحكم في كيفية دخول اللاعب إلى اللعبة، على سبيل المثال، في لعبة متعددة اللاعبين، يمكنك استخدام (Game Mode) لتحديد مكان تواجد كل لاعب ضمن اللعبة، والأهم من ذلك، يحدد وضع اللعبة بيدق اللعب الذي سيستخدمه المشغل.
انتقل إلى مستعرض المحتوى وتأكد من أنك في مجلد المخططات (Blueprints)، ثم انقر فوق الزر (Add New) وحدد (Blueprint Class).
بعد ذلك، من النافذة المنبثقة، حدد (Game Mode Base) وقم بتسميتها (GM_Tutorial).

الآن، تحتاج إلى تحديد فئة بيدق اللعب والتي سوف تمون موجودة بشكل افتراضي، ومن أجل ذلك انقر نقراً مزدوجاً فوق 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.

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

أخيراً، تحتاج إلى تحديد مكان تواجد اللاعب ضمن اللعبة، ويمكنك القيام بذلك عن طريق وضع بداية اللعب في المستوى.
تحديد مكان بداية اللعب (Placing the Player Start)
أثناء عملية إنتاج اللاعب، يبحث وضع اللعبة (Game Mode) عن موضع بداية اللعب، وإذا وجد وضع اللعبة واحداً، فسيحاول إنتاج اللاعب هناك.
ولتحديد موضع بداية اللعب، انتقل إلى لوحة الأوضاع وابحث عن (Player Start)، ثم انقر بزر الماوس الأيسر واسحب (Player Start) من لوحة الأوضاع (Modes panel) إلى منفذ العرض (Viewport) ثم تحرير النقر بالزر الأيسر.

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

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

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

وإذا كنت قد قمت بترميزها بشكل ثابت، فسيتعين عليك المرور عبر كل ممثل وتغيير المفاتيح بشكل فردي.
تعيين المحاور والإجراءات
لعرض إعدادات الإدخال، انتقل إلى تحرير \ إعدادات (Edit\Project Settings) المشروع، وعلى اليسار، حدد الإدخال ضمن قسم إينجن (Engine).

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

يوفر أنريل (Unreal) طريقتين لإنشاء روابط المفاتيح:
- تعيين الإجراء، ويمكن أن يكون هذا في حالتين فقط: مضغوط أو غير مضغوط، ولن يتم تشغيل أحداث العمل إلا بمجرد الضغط على المفتاح أو تحريره، وتُستخدم في الإجراءات التي ليس لها حالة وسط، مثل إطلاق النار من مسدس.
- تعيين المحور: وينتج عن ذلك قيمة عددية تسمى قيمة المحور (المزيد حول ذلك لاحقاً)، وستطلق أحداث المحور كل إطار، تستخدم بشكل عام للإجراءات التي تتطلب عصا التحكم أو الماوس.
وفي هذا البرنامج التعليمي، سوف يتم استخدام تعيينات المحاور.
إنشاء مخططات الحركة (Creating Movement Mappings)
في البداية سوف يتم إنشاء مجموعتين لتخطيط المحاور، تسمح تلك المجموعات بربط مفاتيح متعددة بحدث واحد.
ولإنشاء مجموعة تعيين محور جديدة، انقر فوق علامة + الموجودة على يمين تعيينات المحور (Axis Mappings)، وقم بإنشاء مجموعتين وقم بتسميتهما MoveForward و MoveRight.

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

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

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

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

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

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

وبعد ذلك، يأتي الجزء الممتع، وهو تحريك بيدق اللعب، أغلق إعدادات المشروع ثم افتح BP_Player في محرر المخططات (Blueprints editor) بالنقر المزدوج عليه.
تحريك بيدق اللعب (Moving the Player)
أولاً، تحتاج إلى الحصول على الأحداث لتعيينات حركتك، انقر بزر الماوس الأيمن فوق مساحة فارغة في مخطط الأحداث للحصول على قائمة بالعقد، ومن القائمة، ابحث عن MoveForward.
أضف عقدة MoveForward المدرجة ضمن أحداث المحور، ولاحظ أنك تبحث عن العقدة الحمراء ضمن أحداث المحور، وليس العقدة الخضراء ضمن قيم المحور.
كرر العملية مع MoveRight.

الآن، ستقوم بإعداد العقد لـ MoveForward.
استخدام المتغيرات (Using Variables)
للتحرك، تحتاج إلى تحديد مدى سرعة تحرك البيدق، وكطريقة سهلة لتحديد السرعة هي تخزينها في متغير.
ولإنشاء واحدة، انتقل إلى علامة التبويب My Blueprint وانقر فوق علامة + الموجودة على يمين قسم المتغيرات.

بعد تحديد المتغير الجديد، توجه إلى علامة التبويب التفاصيل (Details) وأعد تسمية المتغير إلى MaxSpeed.
وبعد ذلك، قم بتغيير نوع المتغير إلى Float، وقم بذلك عن طريق النقر فوق القائمة المنسدلة بجوار نوع المتغير وتحديد عائم.

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

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

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

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

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

يمثل الخط الأبيض سلسلة تنفيذ، بمعنى آخر، عندما يقوم اللاعب بتحريك محور الإدخال، سيتم إنشاء حدث يقوم بتنفيذ عقدة InputAxis MoveForward، ويمثل الخط الأبيض أنه بمجرد حدوث ذلك، سيتم تنفيذ عقدة إضافة إدخال الحركة (Add Movement Input).
تأخذ عقدة إضافة إدخال الحركة (Add Movement Input) المدخلات التالية:
- الهدف (Target): ضبط على الذات، وهو في هذه الحالة اللاعب (المربع الأحمر).
- الاتجاه العالم (World Direction): الاتجاه الذي يتحرك به الهدف، وهو في هذه الحالة الاتجاه الذي يواجهه اللاعب.
- قيمة المقياس (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 وحدة.

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

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

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

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

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

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

وبشكل أساسي، ينقل 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).
وكما يوحي اسمها، ستزيل البيدق المستهدف من اللعبة، ومع ذلك، نظراً لعدم وجود هدف، فإنه سيدمر البيدق الذي أطلق عليه.

وضع العنصر (Placing the Item)
أغلق محرر المخطط (Blueprint editor) ثم تأكد من أنك في مجلد المخططات.
وابدأ في وضع الموز في المستوى عن طريق النقر بزر الماوس الأيسر وسحب BP_Banana إلى منفذ العرض (Viewport).

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