تصميم الالعاب انرل انجن بلوبرينت
Unreal Engine Bleuprints
وهنا سنحاول اكمال اكواد اخرى وطرق تصميم العاب مختلفة بواسطة البلوبرينت
تصميم لعبة مشابهة للعبة subway
اولا نختار في البداية النوع نضغط على ايقونة التلفاز ونختار الهاتف اذا كنت ستجعلها للهواتف
سنقوم باختيار المنظور الثلاثي third person
بعد فتح البرنماج سندخل الى بلوبرينت الشخصية وسنحذف اوامر التحكم في دوران الكاميرة كي نجعل اللعبة تبدو ثنائية الابعاد اذا سنحذف اوامر gamepad input وسنحذف امر الماوس للكاميرة mouse input
ثم سنقوم بالدخول الى view port ونقوم بتبعيد الكاميرة عن الشخصية قليلا ورفعها للاعلى
وهذا كود جعل اللعب يجري للامام بدون توقف نقوم فقط بحذف امر الجري للامام واضافة امر event tick
يمكن ان تضغط على الشخصية في ساحة العمل وتحدد مكان بداية الجري بالاسهم
الان سنقوم بتحميل ملفات الطريق
وسنقوم بذهاب الى content browser ننشى ملف جديد ونسميه اي اسم runnerfiles وداخله ننشىء ملف اخر ونعطيه اسم لنضع فيه صور مؤثرات الطريق الان نسحب ملفات الطريق ونضعها مباشرة بداخل الملف بالبرنماج
نضغط يمين الماوس على صورة الطريق ونختار creat material سيعطينا شكل كرة دوبل كليك عليها للدخول ونستخرج مربعين باسم texture Sample
الاول نضغط عليه ثم في الجانب باعدادات texture نختار floorTile-Em ثم نربطه مع خيار massive color
وفي المربع الثاني في اعدادته نختار floortile-Nrm ونربطه مع كلمة Normal الان نضغط Apply ونغلق النافذة
الان قرب ملف الطريق سننشى ملف اخر ونسميه بلوبرينت مثلا كي نضع فيه الاشكال ودوبل كليك عليه للدخول اليه ونقوم باضافة add compenent ثم نختار الصندوق cube في اعدادات هذا المربع بجانب الشاشة من خيار Material نختار الذي قمنا بانشائه floortile
من خيارات scal نضع 10-10 لجعل الصندوق مسطح مثل الارضية او نقوم بذلك يدويا باستعمال اداة scale بالضغط R ثم التقليص بالاسهم
الان علينا اضافة نقطة التلامس كي نحدد للمحرك اين سيظيف طريق اخر نقوم باضافة component arrow وهو سهم سنراه نحن فقط ولن يظهر للاعب ونقوم بوضع هذا السهم بنهاية الشكل بالامام اتجاه الطريق اذا لم يظهر السهم يمكن تكبيره في اعداداته بجانب الشاشة بعد الانتهاء نضغط compiler
الان ناخذ الشكل نضعه مباشرة على المشهد بالماوس ونعدل حجمه و الاتجاه او نرفعه
سنضغط على السهم ونغير اسمه الى spawn point الان نضيف component للسهم وهو box collision ثم نقوم بتكبيره ونجعله مثل غرفة طويلة فوق السهم ونعدل الحجم بايقونة scale اعلى الشاشة ونحرك الكاميرة بالاسهم والماوس بالضغط والتحرك للوصول الى زاوية رؤية امامية مناسبة الان بجانب الشاشة ونختار On Compenent Begin Overlap
ثم نستخرج الان cast to third-person-charachter نربطهما كما بالصورة
الان سنقوم باجراء function كي يقوم المحرك باضافة طريق جديد تلقائيا اثناء الجري
للقيام بذلك سندخل الى ThirdPersonGameMode الموجود قرب بلوبرينت الشخصية ثم نختار open full bleuprint Editor وفي جانب الشاشة نضغط على علامة + لاضافة function وسوف يعطينا عقدة New Function ونسميه مثلا spawntile ونربطه مع spawn actor class في class نضع اسم الطريق الذي انشائناه سابقا ومن spawn transform نستخرج promote to variable ونعطيه اسم مثلا
nextspawn ثم من Return value نستخرج cast to master وهو اسم الطريق الذي صنعته انا مثلا ومن Asmaster نستخرج Get spawnpoint وهو اسم السهم ثم get world location
ومن cast to master نستخرج Set Next spawnpoint وهو اسم السهم نضغط يمين الماوس مع Alt فوق هذا الاخير ونخار Split strucPin ثم نربطه كذلك مع getworldlocation ثم نضغط compiler بعد الانتهاء
دائما
الان سنعود للمرحلة الاولى داخل master ونكمل الاضافات
نربط cast ToThirdpersoncharachter مع Cast ToThirdpersonGameMode ونستخرج منه spawntile الذي انشائناه سابقا
وهذا يعني انه سيصنع لنا طريق جديد بلا نهاية
بببب
بعد الانتهاء نقوم بانشاء New level ونختار Default ثم نحذف الارضية وفي قائمة الخاصة ب
gameMode ندخل الى event Graph ونقوم بانشاء event begin play ونربطه مع foorLoop ثم spawntile نسحبها من جانب الشاشة ونربطها
نعطيه اوامر التكرار بين صفر وتسعة وهكذا يصير لدينا شخصية تجري بلا توقف في طريق لا نهاية له
في البداية وجدت ان الشخصية تجري بشكل عمودي فقمت بتدوير الشكل حتى يناسب اتجاه الجري للشخصية
سنقوم بشرح طريقة التنقل بين الطرقات مباشرة دون تدوير الشخصية
سوف ندخل الى بلوبرينت الشكل الذي سميته انا master ثم في الطريق التي لدينا سنقوم بعمل add compenent ونختار الاسهم Arrow ونضع كل سهم في وسط الاتجاهات الثلاثة التي سوف تتنقل بينها الشخصية اسمينها line1-Line2-Line3 الان نضغط compile
الان ندخل الى بلوبرينت الشخصية ثم event graph ونضيف عقدتي Left و Right من keybord events
ثم نجانب الشاشة نضيف variable ونسميه Lane ونختار بجانب الشاشة نوعه integer المتغايير كي نخبره اي الطريق سيسلكه نضغط compile ثم في default value نعطيه 1
الان سنقوم بانشاء variable اخر ونسميه Lane Y ونجعل نوعه float ونضغط على جانب كلمة float ونختار Array ثم نضغط compile ونقوم باضافة ثلاث اسطر في array elements ونكتب ارقام مواقع الاسهم التي وضعنها للشكل اذا المربع الاول ساكتب فيه حسب الموقع عندي عند الضغط على السهم يعطينا موقع كل سهم بجانب الشاشة في خانة Location سنتاخذ احداثيات حسب الاتجاه الحركة مثلا انا عندي الاتجاه Y نضع الاحداثيات للخيار الاول والثالث فقط اما الوسط يبقى على الصفر
الان نبدا في ربط اكواد والعقدتين left و Right سنحدد ماذا سيحدث حين نضغط عليها
اذا من left سنربطه مع set newline التي انشائنها سابقا ثم نربط هذا الاخير مع ثم من set نستخرج clamp كي يمنعه من التحرك اعلى من اثنان ومنه نستخرج int+int ثم نسحب lane التي انشائنها من الجانب ونربطها معه ولا ننسى تغيير max في clamp الى 2 ثم في integer التي اخرجنها نعطيه -1 بالنسبة للعقدة right ننسخ نفس الكود ونلصقه معه ونغيير فقط قيمة int الى 1 عكس الاول
الان قمنا بتجهيز الخطوط والان علينا اعطاء اوامر التبادل فيما بين هذه الخطوط
يمين الماوس ونستخرج عقدة add timeline ونعطيه اسم lepetimeline ونربط العقود الاولى مع play from start
ثم نضغط على نود الtimeline ونضغط على علامة F float truck ونعطيه اسم LaneY
من هنا نحدد التوقيت التي ستستغرقها الشخصية للتحرك من الخط الاول للثاني بعد الضغط نضع 0.10 في Length الان بالوسط الشكل في البداية نضغط يمين ونضيف keyframe ونعطيها 0 في value و time ونضيف امامها قليلا keyfram اخرى ونعطيها 0.1 time و 1.0 value ثم نضغط compile ونعود للكودات
الان سنضيف بعض التوجيهات لتحريك الشخصية نفسها
نربط finished من timeline مع set lane ونسحب Newlane من جانب الشاشة ونربطهما ومن update نربطه مع SetActorLocation
وهذا سيجعل الشخصية تتحرك عند كل طريق جديد تم انشائه تلقائيا في location نضغط يمين الماوس ونختار split Struct Pin ثم نسحب capsul compenent من جانب الشاشة
ونربطه مع GetworldLocation ونقوم كذلك بعمل SplitStrukpin عليها ونربط x و z مع x و z في getactorlocation ونستخرج float lerp ونربطه مع new locationY الان نربط laneY من timeline مع
الان نسحب laneY من الجانب ونربطه مع Get Ref ونربطه مع A وننسخ get ref ونسحب lane بجانب الشاشة ونربطه مع get ref اللي فيها laneY ثم نسحب newlane بالجانب ونربطه مع get ref الثاني ثم get ref الثاني مع laneY
اذا هذا هو كود لجعل الشخصية تتنقل بين الخطوط الطريق دون دوران نضغط compile ونرى النتيجة وسوف يتحرك معنا مباشرة باستعمال الاسهم بالكيبورد
سنقوم الان باظهار نقاط الشخصية بحيث يزيد واحد كلما اجتزنا طريق واحد
سنبدا في دخول gamemodebluprint ونقوم باضافة variable نسميه مثلا currentpoint ونحدد نوعه integer وننشء واحد اخر نسميه مثلا multipile ونعطي لهذا الاخير value 1 ثم نضغط compile
ثم نذهب الى داخل بلوبريت الطريق الذي سميناه master ثم نقوم بربط spawntile مع casttoThirdpersongamemode ومن objet نربطه مع get game mode ونربط as third مع set currentpoint التي انشئنها من قبل ثم نربطه مع delay و destryo actor ومن as third نربطه مع get currentpoint اخرى وكذلك نستخرج من as third get multipile المتغايير الثاني ثم من هذا الاخير نربطه مع Intxint ونعطيه واحد ثم نربطه مع int+int ونربط الاخير مع set ونربطه مع print string ونوصل بينهما كما بالصورة
سنلاحظ ان الارقام تظهر الان بجانب الشاشة ولكن ليس بالشكل المطلوب
ملاحظة مهمة الان اذا رجعنا الى متغايير multipile وغيرنا value الى 10 مثلا فسوف يبدا في حسب نقاط من 10ثم 20 الى اخره
الان كي نضيف الارقام بشكل الذي يعجبنا سوف ندهب لملف البلوبرينت وننشء بلوبرينت من نوع widget bleuprint من خيار user interface ثم نعطيه اسم ودوبل كليك للدخول اليه
نختار text ونضعها باعلى وجانب الشاشة ثم من font نحدد الحجم ولالوان ولا ننسى الضغط Anchors ونحدد موقع الارقام نحن وضعنا 000
الان في خيار content بعد الانتهاء نضغط bind ثم create bind وهو يقوم بربط هذا الشء مع المتغايير الذي سبق وقمنا به اذا نضغط bind نربط يدويا text مع cast to thirdpersongamemode و object مع get gamemode ومن as third نربطه مع المتغيير get currentpoint ونربط الاخير مع return value تظهر تلقائيا to text integer ونضع رقم 4 في خانة minimum integral ثم نضغط compile
الان علينا التعريف بالwidget bleuprint التي عدلنا عليها حاليا لذلك سنقوم الاتجاه ال بلوبرينت الشخصية thirdpersonbleuprint ثم نقوم باضافة event beginplay ثم نربطها مع creat widget في class نحدد اسمه الذي وضعناه له ومن return value نربطه مع add to viewport
اذا كنت لا تريد الفاصلة تدخل الى widgetbleuprint ثم المكان الذي ربطنا فيه to text integer تقوم بازالة العلامة من خيار use groupin وستختفي الفاصلة
الان سنضيف ميزة التسارع مع اجتياز كل طريق سنزيد السرعة للضعف
لفعل ذلك نتجه الى بلوبرينت الطريق اللي سميناه master وفي event graph عند print string كما بالصور
وتم ربط max walk speed مع float + float نعطيه 1.01 ونغير الاعداد كما في clamp float
الموضوع قابل للتجديد واضافة معلومات جديدة بشكل دوري
تابع الموضوع وقم بزيارتنا في كل مرة للاستفادة
تحياتي
ولا تنساونا من دعائكم
ومرحبا بكم في قناتنا على اليوتيب yokagi