top of page
طريقة تفعيل الأنيميشن للتعلق على الحائط
سنشرح في هذا الدرس طريقة وضع الإعدادات والأنيميشن التي ستجعل شخصيتنا قادرة على التعلق والإنزلاق من على الحائط ,ولفعل ذلك فعلينا التوجه إلى البلوبرنت الخاص بالشخصية bp_char وبعدها نقوم بالآتي:
1- علينا بإنشاء حدث يدعى event hit

2-نستدعي النقطة actor has tag من other في event hit
event hit: هو حدث لا يحصل إلا عند تصادم الشخصية مع أي شئ نحدده
other: هو الشئ الذي سيتصادم مع الشخصية
actor has tag: أن نجعل لذلك الشئ(actor) شعار خاص يميزه

3-سنقوم بتسمية الشعار(tag): tileswall

ونحن لكي نجعل الشخصية تتعلق على الحائط, فيجب أن تكون الشخصية فقط على الهواء(is falling) ولنستعديها فعلينا أولاً بإحضار حركة الشخصية(character movement) ومنها نستخرج قيمة الحركة في الهواء
(is falling)

4- نستدعي النقطة AND bolean لكي نتمكن من جميع قيميتين مع بعضما البعض في مخرج واحد

5- نستدعي النقطة branch
ونقوم بإنشاء متغير جديد ونسميه tilesslide, نقوم بإستدعاء وتعريف المتغير(set) ونقوم بشبكه مع true
ونضع علامة صح على النتغير

6- نقوم بإسدعاء النقطة retriggerable delay ونشبكها في حال أن الشخصية مت علقة على الحائط
retriggerable delay: ما يحصل بعد عمل هذه النقطة هو أنه عندما تكون الشخصية معلقة وتنزلق من على الحائط وإنتهت من الإنزلاق فستتفعل نقطة retriggerable delay ويحصل تأخير لمدة معينة( نحن نختار الوقت) بعدها نذهب للنقطة التي بعدها والتي ستكون التوقف عن الإنزلاق


7-علينا الآن بإنشاء أنيميشن خاص للتعلق على الحائط
وكما قلت لكم من قبل بأنه لا يوجد أنيميشن من ملفات اللعبة خاص للتعلق على الحائط مما سيجعله من الصعب جداً إنشاء أنيميشن لائقاً للتعلق, ولكن الغرض الأساسي من تلك الشروح هو لمعرفة البرمجيات الازمة لكي تضع الأنيميشن الخاص بك للتعلق
سأختار فقط الشكل رقم 9 ليكون الأنيميشن الخاص بالتعلق

8- ثم نقوم بوضعه في مكتبة الأنيميشن (allanimation)

9- ننتقل الآن إلى بلوبرنت الأنيميشن animation_bp ونقوم بإنشاء نقطة القفز jump node ونسميها ontiles ونسنخرج من القفز حالة أنيميشن جديدة ونسميها(tilesliding) ونضع بداخل tilesliding الأنيميشن play tileslide


10- نقوم بتوصيل حالة التعلق على الحائط إلى حالة الوقوف لكي نستطيع بين الحالتين

11- علينا بالتوجه إلى قاعدة النقل بينها ونضع لعض البرمجيات
علينا بوضع النقاط التي تثبت أن في حال كانت الشخصية تمشي على الأرض(is walking) ولم تكن تنزلق على البلاط(not tilesliding), فقم بالدخول إلى حالة الوقوف(idle)

علينا بإستدعاء المتغير الخاص بالتعلق على الحائط من الشخصية bp char عن طريق الكتابة في مربع البحث get tileslide

نقوم ب إستدعاء النقطتين
not boolean, and boolean
NOT boolean: نشبكها مع متغير tileslide لأنه في حال لم تكن الشخصية متعلقة على الحائط وكانت على الهواء انتقل إلى حالة الوقوف
AND boolean: حتى يتسنى لنا جمع قيمة المتغيران is falling و tileslide للإنتقال إلى حالة الوقوف

12- نحن أيضاً سنقوم بالإنتقال من حالة التعلق على الحائط إلى حالة السقوط ف ي حال قفزنا أو إبتعدنا من الحائط ونحن في الهواء ولفعل ذلك فعلينا بتوصيل حالة التنقل على الهواء(tilesliding) إلى حالة السقوط (fall) ونكرر الخطوات السابقة ولكن هذه المرة فعلينا بإضافة النقطة is falling وليس is walking لأننا سنكون بالهواء


13- نضغط compile
14- نتوجع إلى بلوبرنت الشخصية ونستدعي نتقطة القفز jump node عن طريق إستدعاء animation component ثم anim instance ثم jump to node

15- نضع إسم نقطة القفز التي أنشأناه ا(ontils) لكي ننتقل لها

ونشبكها بهذا الشكل

تأكد من قيامك بتفعيل المتغير tileslide عن طريق وضع علامة صح



لقد كتبنا شعاراً قبل قليل لن يعمل إلا عندما تكون الشخصية تقوم بالتعلق على البلاط الذي يحمل شعار tileswall لذلك فما علينا فعله هو التوجه والتحديد oakwoods tilesmap الخاص بالبلاطات ونذهب إلى التفاصيل details الخاصة به


نكتب في مربع البحث tags وفي آخر خانة عند tags نضغط + ونكتب tileswall

16- نضغط compile ونبدأ اللعب
وسنلاحظ بأنه في حال قفز الشخصية والتعلق على اللبلاط فإنه سيدخل في وضعية التعلق(tilesslide) وعند هبوطه سيرجع إلى وضعية الوقوف(idle) ولكن الشخصية تواجه البلاط ,وما علينا فعله هو أن نجعل الشخصية أقرب إلى البلاط عند التعلق , وذلك ما سنشرحه الآن:
1-علينا بالتوجه إلى بلوبرنت الشخصية

2-بعد تفعيل النقطة jump node على الشخصية أن تلتصق أكثر للبلاط لذلك فعلينا أن نخرج منها نقطة تدعى set relative location (sprite) ونحن لا نريد سوى تغيير محور الإتجاه يميناً أو يساراً(X axis) لذلك فعلينا بتقسيم الإتجاهات( split struct pin)

3- نحن لا نريد للشخصية أن تنتقل جميع محاور إتجاهاتها إلى صفر ولكن فقط X axis ونريد باقي المحاور
(z and y) أن تظل كما هي وما علينا فعله هو بإخراج نقطة من الشخصية(sprite) تدعلى
get relative location تعطينا جميع قيم محاور الشخصية حالياً. ونقسمها split struct pin لنحصل على قيمة كل إتجاه على حدة.
ونجعل قيمة X الجديدة بقيمة 25 أو40, كلما زادت القيمة أصبحت الشخصية أقرب إلى الحائط وكلما أصبحت القيمة أصغر أصبحت أبعد عن الحائط

4- بعد تعلق الشخصية على الحائط علينا أن نجعلها تعود إلى وضعها الطبيعي وتبتعد عن الحائط ولفعل ذلك ببساطة فعلينا أن ننسخ البرمجيات الخاصة بالمحاور ولكن هذه المرة نجعل المحور في إتجاه X=0 لأنه الوضع الطبيعي للشخصية


bottom of page