top of page
طريقة تفعيل الأنيميشن للتعلق على الحائط 

سنشرح في هذا الدرس طريقة وضع الإعدادات والأنيميشن التي ستجعل شخصيتنا قادرة على التعلق والإنزلاق من على الحائط ,ولفعل ذلك فعلينا التوجه إلى البلوبرنت الخاص بالشخصية bp_char وبعدها نقوم بالآتي:

1- علينا بإنشاء حدث يدعى event hit

image.png

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

other: هو الشئ الذي سيتصادم مع الشخصية
actor has tag: أن نجعل لذلك الشئ(actor) شعار خاص يميزه 

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png
image_edited.jpg

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

image.png

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

image.png

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

image.png
image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png
image.png

13- نضغط compile

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

image.png

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

image.png

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

image.png

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

image.png
image.png
image.png

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

image.png
image.png

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

image.png

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

1-علينا بالتوجه إلى بلوبرنت الشخصية 

image.png

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

image.png

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

image.png

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

image.png
image.png
bottom of page