top of page
وضع إعدادات تلقي الضرر
دعونا الآن نضع البرمجيات الازمة لنجعل العدو يتلقى الضرر
1-انشاء الأنيميشن وبلوبرنت الأنيميشن
1- دعونا أولاً نقوم بإنشاء 3 أنماط حركة 1-تلقي الضرر(orchit) 2- الموت(orcdeath)
3- الجثة(orcdeadbody)



2- دعونا ننتقل إلى ملف مصدر الأنيميشن(allnimationsource) ونقوم بوضع جميع الأنيميشن التي أنشأناها للتو

3- نقوم بالإنتقال إلى بلوبرنت الأنميشن ولأننا سننتقل من أي حالة إلى حالة تلقي الضرر(orchit) فهناك شئ يمكننا إضافته يدعى
(jump node) يجعلنا نقفز من أي حالة بضغطة زر, فعندما نضغط بالفارة اليسار فسيظهر لنا في آخر القائمة Jump ونقوم بتسميته damageevent
4-نخرج من نقطة القفز الحالة (animation state) التي نريدها أن تعمل في حال الإنتقال لنقطة القفز jump node ونسميها orcgethit.
5-في داخل الحالة orcgethit نضع Play orchit
6-نقوم بالتوصيل من حالة orcgethit إلى حالة idle/walk
بعد أن يتعرض العدو للضرر سيقوم بالإنتقال إلى حالة الوقوف(idle)
7-في حالة الإنتقال بين حالة orcgethit و حالة idle/walk علينا بالكتابة في مربع البحث time remaining وسيظهر تلقائياً
time remaining(orcgethit)
time remaining: هو الوقت المتبقي حتى ينتهي الأنيميشن, فيه نستطيع تحديد الوقت المتبقي حتى ننتقل من حالة orcgethit إلى حالة idle/run
نضع less لكي نحصل على الوقت المتبقى لتلقي الضرر في آخر 0.1 ثانية ثم ننتقل.
8-نقوم بإنشاء حالة قفز جديدة ونقوم بتسميتها deathevent.
9-نخرج من نقطة القفز الحالة (animation state) التي نريدها أن تعمل في حال الإنتقال لنقطة القفز jump node ونسميها orcdeath.
10-في داخل الحالة orcdeath نضع Play orcdeath
11- نقوم بإنشاء حالة جديدة animation state ونسميه (deadbody) ونقوم بتوصيلها مع orcdeath للإنتقال من حالة الموت إلى الجثة.
12- في داخل الحالة deadbody نضع Play orcdeadbody

13-في حالة الإنتقال بين حالة orcdeath و حالة orcdeadbody علينا بالكتابة في مربع البحث time remaining وسيظهر تلقائياً time remaining(orcdeath)
نضع less لكي نحصل على الوقت المتبقى لموت الشخصية في آخر 0.1 ثانية ثم ننتقل.

2-تفعيل الأنيميشن في البلوبرنت
قمنا بالدرس السابق بإنشاء نقطة في بلوبرنت الشخصية bp_char تدعى apply damage وقمنا بجعل قيمة متغير تلقي الضرر 2 (apply damage): تقوم بإلحاق الضرر بأي شخصية أخرى
ونوع المتغير هو من نوع float: هي الأعداد ذات الفواصل التي تحتمل قيمة صغيرة(يرمز إليه في الأنريل باللون الأخضر)

الآن سنجعل العدو يتلقى الضرر من الشخصية التي سنلعب بها ولفعل ذلك:
1- علينا بالإنتقال الى ملف البلوبرنت الخاص بالعدو bp_orc ونقوم بإنشاء حدث تمت برمجته من الأنرييل يدعى event AnyDamage
event AnyDamage:حدث يحصل فقط في حال تلقي العدو(this actor) أي ضرر.

سنلاحظ أن في حدث event AnyDamage هناك عدد كسري(float) يدعى (damage)
العدد الذي سنقوم بتوصيله به سيكون الضرر المتلقي وما علينا فعله الآن هو
1- أن ننشأ متغيراً من نوع(float) يحمل تلك القيمة ونقوم بتسميته (orchealth) ونجعل قيمته 4 ثم نقوم بإستدعائه
2- نقوم بإنشاء نقطة عملية الطرح(substract) حيث سنقوم بطرح قيمة الضرر الذي يتعرض له العدو مع القيمة الجديدة لطاقة العدو (orchealth)
ما يعني أنه في كل مرة يتعرض العدو لأي ضرر ستنقص قيمة(orchealth)
3- علينا أن نقوم بتعيين القيمة الجديدة لطاقة العدو(setorchealth) بعد تلقيه الضرر (orchealth) عن طريق إستدعائه مرة أخرى وتوصيله مع event AnyDamage و مجموع ناتج عملية الطرح بين قيمة الضرر الذي يتعرض له العدو(damage) على قيمة الطاقة(orchealth)
4- إن كانت القيمة الجديدة لطاقة العدو (orchealth) أقل من أو يساوي 0 قم بتنفيذ أنيميشن الموت deathevent
5- وإن كانت القيمة الجديدة لطاقة العدو (orchealth) أكثر من أو يساوي 0 قم بتنفيذ أنيميشن تلقي الضرر damageevent

6- نقوم بالإنتقال إلى صفحة البلوبرنت الشخصية(bp_orc) ثم صفحة التفاصيل(details) وتكتب anim ثم نختار بلوبرنت الأنيميشن الخاص بالشخصية(animationbp_orc) ونبدأ اللعب

3-جعل العدو يتوقف ونستطيع العبور من خلاله
سنجد بعد ضرب العدو بأنه يموت بعد تلقي 4 ضربات, ولكن عند موته وينتقل إلى أنيميشنorcdeadbody فسنجد بأنه ما زال يتحرك ولا يختفي.
ولذلك فعلينا إنشاء برمجيات تجعل العدو عند الموت يتوقف مكانه ويختفي, ونستطيع العبور خلاله ولفعل ذلك :
1- نقوم بإنشاء متغير جديد ونسميه(orcdead) من نوع boolean: المتغير الذي يحتمل قيمتين فقط إما صح أو خطأ
2- نقوم بإستدعائه(set) ونضعه بعد نقطة القفز(deathevent) ونضع علامة صح

علينا أن نجعل العدو يتوقف عن الحركة في حال تحقق المتغير الذي قمنا بإنشائه(orcdead)
لذلك فعلينا أن ننتقل الى الحدث المخصص لحركة العدو(handlingmovement) ونخرج نقطة(branch) بعد الحدث المخصص ونجعل حالة الشرط(condition) المتغير(orcdead) ونقوم بتوصيل حالة false مع برمجيات الحركة(add movement input).

سنقوم بإستدعاء(capsule component) ونخرج منها set collision profile name
capsule component: هو الذي يحتوي على خاصية التصادم(colliosion) مع الأشياء.
set collision profile name: يقوم بتغيير نوع تصادم العدو عن طريقة كتابة اسم نوع التصادم
سيكون نوع التصادم(overlap only pawn).
overlap only pawn: يمكن لأي شخصية من نوع(pawn) العبور(overlap) من خلال العدو عند موته
معلومة: جميع الشخصيات التي ستنشأها سيكون نوع التصادم تلقائياً من نوع pawn ويمكننا التأكد من خلال الإنتقال إلى بلوبرنت الشخصية ثم التفاصيل ونكتب collision



4-جعل العدو يختفي عند الموت
سنجعل العدو يختفي عند الموت بعد 2 من الثواني ويمكننا فعل ذلك بكل بساطة عن طريق الآتي:
1-نقوم بإنشاء نقطة delay ونجعل الوقت 2s
2- نقوم بإنشاء نقطة destroy actor
destroy actor: تقوم بتدمير العدو وإخفائه من المرحلة بشكل دائم

bottom of page