‫يا.
‫مرحبًا بعودتك.
‫الآن لدينا مقذوفتنا ، ونعلم أنها تولد أحداثًا مصابة ، لذلك نحتاج إلى القيام
‫بشيء ما عندما تصيب المقذوفة هدفنا بالفعل.
‫الآن ، سيتضمن ذلك إحداث ضرر ، مما يعني أننا بحاجة إلى طريقة لتتبع الصحة.
‫لذلك سننشئ فصلًا للتعامل مع الصحة والأضرار يسمى مكون الصحة.
‫والسبب في حصول هذه الوظيفة على فئتها الخاصة هو أنه يمكننا إعادة استخدامها لفئات
‫مختلفة مثل الخزان والبرج.
‫لذلك دعونا نناقش هذا المكون الصحي.
‫نحن الآن على دراية بفئة مكون مشهد الاستخدام.
‫حسنًا ، هذه الفئة مشتقة من فئة تسمى مكون الممثل.
‫في الواقع ، إليك توثيق مكون مشهد الاستخدام.
‫وفي التسلسل الهرمي للميراث ، يمكنك أن ترى أن الأب هو مكونك الفاعل.
‫الآن أنت تقوم بدور مكون هو أكثر أساسية من المكون الذي رأيته.
‫ليس له أي تحول.
‫لذا فإن الموقع والدوران والمقياس ليس شيئًا يمتلكه مكونك الفاعل.
‫لا يدعم التعلق.
‫لا يمكنك إرفاق مكون نشط ، على سبيل المثال ، مكون شبكة ثابتة أو مكون كبسولة.
‫إنه مجرد شيء ينتمي إلى الممثل.
‫ونظرًا لعدم وجود تمثيل أو تحويل مرئي ، لا نحتاج إلى إرفاقه بأي شيء.
‫قارن هذا بمكوِّن مشهد الاستخدام ، الذي يحتوي بالفعل على تحويل وقدرة
‫على ربط نفسه بمكونات أخرى أو ربط مكونات أخرى به.
‫لذلك لتتبع الصحة والعناية بالضرر ، لسنا بحاجة إلى أي من هذه الأشياء.
‫إذن أنت تتصرف ، سيكون المكون مثاليًا لهذا.
‫لذلك دعونا نعود إلى المحرر ونجعل فعلنا الجديد فئة مكونة.
‫لذلك سننتقل إلى الأدوات وفئة C ++ الجديدة.
‫وإذا قمت بالتمرير لأسفل ، يمكنني رؤية مكون الممثل.
‫هذا ما سنختاره.
‫الآن كن حذرا.
‫لا تختار الممثل.
‫هذه فئة مختلفة.
‫إنها في الواقع فئة أكبر ولديها أشياء أكثر بكثير من المكون الممثل.
‫نحتاج إلى مكون الممثل على وجه التحديد ، لذا حدده ، وانقر فوق التالي.
‫وهذا يمكننا أن نسميه ببساطة مكون الصحة.
‫دعنا ننقر فوق إنشاء فصل دراسي.
‫الآن لدينا هنا مكونات الصحة الجديدة وملفات CP ويمكنك أن ترى هنا أن مكون الصحة الخاص بك
‫، الفئة التي أنشأناها للتو مشتق من أنك تقوم بدور مكون.
‫لذا تأكد من حصولك على النوع الصحيح هنا وسترى أنه يحتوي على حرف U.
‫فئة الماكرو.
‫تحدد هذه التعريفات المكان الذي تقول فيه مخططات تفرخ مكون الجدول.
‫هذا ما سيسمح لنا بإضافة هذا المكون مباشرة في المخططات ، وهو ما
‫سنفعله الآن.
‫سيهتم المكون الصحي الجديد بالصحة ، مما يعني أننا بحاجة إلى متغيرين.
‫دعنا نمضي قدمًا ونضيفها وسأجعلها خاصة.
‫لذلك دعونا نمضي قدمًا ونضيف قسمًا خاصًا أسفل القسم المحمي مباشرةً ، ويمكننا إضافة
‫متغيرين للصحة.
‫الآن ، ستكون هذه عوامات وسأسمي أول واحد Max Health.
‫سيكون هذا هو الحد الأقصى لمقدار الصحة الذي يمكننا الحصول عليه ويمكننا تعيين هذا على قيمة
‫افتراضية مثل 100 F.
‫الآن ، بالإضافة إلى Max health ، سيكون لدينا قيمة صحية والتي ستكون هي الصحة الحالية وستكون هذه
‫هي التغييرات التي تحدث عندما نتعرض للضرر.
‫لذلك دعونا نجعل عوامة أخرى ونسمي هذا ببساطة الصحة.
‫الآن يمكننا تهيئة الصحة إلى صفر F ثم ضبط قيمتها والبدء في اللعب.
‫والسبب في قيامنا بذلك هو أن Max Health ستمتلك خاصية خاصة بك تسمح لنا بتعيينها
‫من داخل لوحة التفاصيل.
‫لذلك دعونا نعطي هذه الخاصية U ونجعلها تعدل في أي مكان.
‫بهذه الطريقة يمكننا تغييرها أثناء تطويرنا.
‫ثم في المكونات الصحية CP هنا والبدء في اللعب ، يمكننا ببساطة تعيين الصحة مساوية لقيمة الصحة
‫القصوى.
‫وبهذه الطريقة عندما تبدأ اللعبة ، سيكون للصحة قيمة الصحة القصوى حتى بعد تغييرها
‫في لوحة التفاصيل.
‫حسنًا ، لنجمع هذا ونعيده هنا في المحرر ، سأقوم بفتح BP - tank وفتح محرر المخطط
‫الكامل.
‫والآن يمكنني إضافة هذا المكون الصحي هنا في لوحة المكونات.
‫لذلك سأقوم بالنقر فوق إضافة والبحث عن الصحة.
‫وهنا نرى الصحة.
‫الآن ، أطلقنا عليه اسم مكون الصحة في C ++.
‫وفي الحقيقة ، تظهر النافذة المنبثقة أنها تسمى مكون الصحة.
‫لذلك فهو يزيل هذا الجزء المكون عند عرضه هنا.
‫وربما لاحظت أنه عندما تبحث عن مكونات شبكية ثابتة أو مكونات كبسولة ، فإنك
‫لا ترى مكون الكلمات هنا أيضًا لهؤلاء.
‫لذا انقر فوق "صحة" والآن لدينا مكون الصحة الخاص بنا وسترى أنه في إطار مكون الصحة
‫لدينا أقصى صحة وتم تعيينه على 100 ولا نرى صحة لأننا لم نكشف هذا المتغير.
‫حتى الآن BP - tank يحتوي على مكون صحي ويقال أن الخزان يمتلك هذا المكون الصحي ،
‫BP - tank.
‫هو صاحب هذا المكون الصحي.
‫دعونا نقوم بتجميع وحفظ وإغلاق وفتح برج بيدق BP وفتح محرر المخطط الكامل ويمكننا إضافة
‫مكون صحي إلى برج البركة أيضًا.
‫لذلك دعونا ننقر فوق إضافة مكونات ، والبحث عن الصحة واختيار الصحة.
‫والآن لدينا عنصر صحي على البرج أيضًا.
‫لذلك سأقوم بتجميع هذه وحفظها وإغلاقها وحفظها جميعًا.
‫لذلك لدينا الآن مكون صحي وقد ذكرنا أننا نرغب في الحصول على مكون صحي حتى نتمكن من إعادة
‫استخدامه مع فئات مختلفة.
‫لذلك إذا كان لدينا بيدق في العالم ، على سبيل المثال ، برجنا ، فسيكون له مكون الصحة الخاص به ومن
‫ثم يمكن أن يكون لخزاننا مكون الصحة الخاص به.
‫الآن ، عندما تتفاعل مقذوفتنا مع أيٍّ من هذين ، على سبيل المثال ، عندما تولد حدثًا
‫ناجحًا ، عند الاصطدام بأحد هذه الأشياء ، يمكن لبيادقنا تشغيل بعض الوظائف في
‫المكون الصحي وتغيير تلك القيم الصحية.
‫إن وضع وظائفنا الصحية في مكون ثم إضافة هذا المكون إلى فئة له بعض المزايا عن البديل
‫، والذي سيكون ببساطة وضع الوظيفة الصحية في فئة البيدق الأساسية ، على
‫سبيل المثال ، ووراثة ذلك في الخزان والبرج.
‫كما ترى ، يسمح لنا هذا بالحفاظ على فئتي الخزانات والبرج صغيرة والتعامل فقط مع الوظائف المحددة
‫لتلك الفئات.
‫بينما يمكن إضافة المكون الصحي إلى أي فاعل آخر ، مثل الأشياء التي لا تعمل مثل الدبابات
‫أو الأبراج.
‫يمكننا أن نصنع جدارًا قابلًا للتدمير ، على سبيل المثال ، يمكن تدميره بمجرد أن يحدث ضررًا
‫كافيًا.
‫لذلك دعونا نتحدث قليلاً عن كيفية تحقيق ذلك الآن.
‫لقد بنى Unreal Engine وظائف التلف ونظامه التالف معقد للغاية في الواقع.
‫يرث أي لاعب في لعبتنا عددًا من أحداث الضرر ، أحدها يسمى تلقي أي ضرر.
‫هذا مفوض متعدد البث ، تمامًا كما هو الحال في ضرب المكون.
‫سنقوم الآن بإضافة مكونات صحية إلى بيادقنا وستستند هذه المكونات إلى الولايات المتحدة.
‫فئة المكون الصحي.
‫لذلك بما أننا نعلم أن بيادقنا سترث هذا عند أخذ أي مفوض للضرر ، فعندئذ إذا أنشأنا وظيفتنا
‫المخصصة في فئة مكون الصحة ، فيمكننا استخدام هذه الوظيفة باعتبارها رد اتصال
‫وربطها بـ on اتخاذ أي ضرر مندوب.
‫لذلك عندما يتم إنشاء حدث ضرر ، يمكن للمفوض إرسال أي وظائف مرتبطة
‫به في قائمة الاستدعاء الخاصة به.
‫لذا فإن السؤال التالي هو كيف نجعل ذلك المندوب يبث؟
‫نحن بحاجة إلى طريقة لتوليد حدث الضرر.
‫حسنًا ، هناك وظيفة في إحصائيات اللعب الخاصة بك ستفعل ذلك بالضبط وتسمى تطبيق الضرر.
‫إذا استخدمنا هذه الوظيفة الثابتة من إحصائيات اللعب الخاصة بك لتطبيق الضرر ، فإن تطبيق الضرر يأخذ
‫عددًا من المعلمات ، بما في ذلك الممثل الذي تعرض للتلف.
‫لذلك إذا استدعينا تطبيق الضرر ، فسيتم إطلاق المفوضين عند اتخاذ أي ضرر وسيتم استدعاء وظيفة رد الاتصال
‫هذه استجابةً لذلك.
‫لذا فإن تطبيق الضرر هو ما يولد حدث الضرر.
‫لإعداد كل هذا ، لدينا ثلاث خطوات.
‫أولاً ، قم بإنشاء وظيفة رد الاتصال وبما أن هذا سيكون ملزمًا عند حدوث أي ضرر ، فيجب أن
‫تحتوي على معلمات الإدخال الصحيحة حتى يتم استدعاء أي ضرر وتمرير جميع المعلومات
‫المرتبطة به حول حدث الضرر.
‫الخطوة الثانية هي ربط رد الاتصال هذا بالمفوض.
‫لقد رأينا كيفية القيام بذلك مع المفوض عند المكون باستخدام الوظيفة الديناميكية الإضافية.
‫سنفعل نفس الشيء هنا.
‫والخطوة الثالثة هي إنشاء حدث الضرر عن طريق استدعاء الوظيفة الثابتة التي تلعبها اللعبة ، والضرر
‫المطبق.
‫لذا دعنا نعود إلى الكود ونبدأ في إعداد هذا.
‫تمام.
‫لذلك نحن هنا في مكون الصحة وسنضيف دالة رد نداء.
‫الآن ، يمكن أن يكون هذا باطلاً ويمكننا تسميته بأي شيء نحب.
‫سأسمي هذا الضرر الحاصل.
‫ونظرًا لأننا نلزم هذا المفوض ، يجب أن يكون لديه معلمات الإدخال الصحيحة المناسبة
‫لذلك المفوض.
‫الآن بالنسبة للوظائف المرتبطة بـ on take أي مفوض ضرر ، يجب أن تكون قائمة معلمات الإدخال على النحو التالي.
‫الأول عبارة عن مؤشر ممثل يسمى الممثل التالف ، وهذا ما يبدو عليه.
‫إنه الممثل الذي يتضرر.
‫التالي هو تعويم يسمى الضرر وهذا هو مقدار الضرر الفعلي.
‫الآن ، بعد ذلك ، لدينا تكلفة مؤشر نوع الضرر يسمى نوع الضرر.
‫والسبب في وجود معلمة الإدخال هذه هو أن Unreal Engine لديه مفهوم أنواع الضرر.
‫يمكنك إنشاء أنواع أضرار مخصصة تحتوي على بيانات إضافية يمكنها إخبارك بالقيام بأشياء مختلفة اعتمادًا
‫على نوع الضرر الذي قد تتعرض له.
‫الخسائر الناجمة عن الحرائق.
‫ضرر السم.
‫أضرار المتفجرات وما إلى ذلك.
‫وإذا كنت ترغب في تنفيذ وظيفة مخصصة لكل نوع من أنواع الضرر ، فيمكنك تنفيذ ذلك في
‫نوع الضرر المخصص الخاص بك.
‫نحن الآن لا ننشئ نوع الضرر المخصص الخاص بنا ، ولكن نظرًا لأننا نربط هذه الوظيفة
‫بمندوب الضرر ، يجب أن يكون لديها معلمات الإدخال هذه.
‫لذلك قمنا بتضمينها هنا.
‫الآن المعلمة التالية هي مؤشر تحكم وهذا يسمى المحرض ونظام تلف المحرك غير
‫الواقعي.
‫المحرض هو المتحكم المسؤول عن الضرر.
‫لذلك إذا كان الضرر ناتجًا في النهاية عن سيطرة لاعب على بيدق ، فإن المحرض هو المتحكم الذي
‫يمتلك هذا البيدق.
‫الآن ، لا داعي دائمًا لأن يكون محرضًا.
‫إذا لم يكن هناك شيء ، فسيكون هذا ببساطة فارغًا.
‫والآن أحصل على التمايل الحمراء حتى أتمكن من إعادة الإعلان عن فئة وحدة التحكم A هنا بين أقواس
‫الدالة.
‫الآن المعلمة الأخيرة هي مؤشر ممثل وهذا واحد يسمى الضرر السبب.
‫هذا هو الفاعل الفعلي الذي تسبب في الضرر.
‫سيكون هذا هو القذيفة نفسها.
‫لذلك أعلنا أن هذا الضرر قد أخذ وظيفة رد الاتصال تمامًا مثل وظيفة رد الاتصال الأخرى الخاصة بنا على hit.
‫هذا يجب أن يكون دالة u.
‫لذلك سنقوم بإعطائها وظيفة الماكرو فقط للتأكد من أنها تعمل بمجرد ربطها
‫بـ on take أي مفوض ضرر.
‫والآن بعد أن أعلناها ، نحن على استعداد لتعريفها في ملف CPP.
‫حتى هنا في المكونات الصحية ، CPP.
‫في الأسفل ، سأقوم بإعطاء هذه الدالة جسمًا وظيفيًا وأقوم بتأهيل الوظيفة بالكامل
‫باسم الفئة.
‫والآن لدينا رد اتصال.
‫لذا علينا الآن ربط هذا بالمندوب.
‫لكن المندوب غير موجود في المكون الصحي ، فهو موجود في الجهات الفاعلة على وجه التحديد.
‫نريد ربط هذا بـ on take أي مندوب ضرر في البيدق الذي يمتلك هذا المكون.
‫فكيف نصل إلى مالك هذا المكون حتى نتمكن من الارتباط بأحد مندوبيها؟
‫حسنًا ، سنفعل هذا ونبدأ اللعب والطريقة التي يمكننا بها الوصول إلى مالك المكون
‫هي من خلال وظيفة git owner.
‫إذا قمت بالمرور فوق هذا ، فسترى أنه يقوم بإرجاع مؤشر ممثل.
‫هذا هو المؤشر إلى الممثل الذي يمتلك مكونًا.
‫يمكن أن تكون المكونات مملوكة لبيادق ، ويمكن أن يمتلكها ممثلون ، لذلك
‫ستعيد المالك في شكل مؤشر ممثل.
‫إذن لدينا وظيفة رد الاتصال وخطوتنا الثانية هي ربطها بالمندوب عند أخذ أي ضرر موجود
‫على البيدق الذي يمتلك المكون الصحي.
‫لذلك نظرًا لأن لديك خبرة في عمليات رد الاتصال الملزمة للمندوبين ، فسيكون هذا هو التحدي الذي تواجهه في
‫فئة مكون الصحة.
‫في Begin Play ، ستقوم بربط الضرر الذي تم التعرض له بأخذ أي مفوض ضرر موجود
‫على مالك المكون.
‫لذلك ستصل إلى هذا المفوض من خلال وظيفة الحصول على المالك.
‫بعبارة أخرى ، ستتصل بالحصول على مالك ومن ثم ستصل إليه لتتلقى أي ضرر.
‫ثم من هناك تعرف كيفية ربط عمليات الاسترجاعات بالمفوضين باستخدام إضافة ديناميكية إذا
‫واجهتك مشكلة ، انظر كيف قمنا بربط رد الاتصال على مكون ضرب المفوض بإيقاف الفيديو مؤقتًا وربط
‫الضرر المأخوذ بـ on ، خذ أي مفوض ضرر الآن.
‫تمام.
‫لذا عدنا هنا في مكون الصحة ونحن على استعداد للقيام بربط وظيفة رد الاتصال الخاصة بنا.
‫لذا هنا ونبدأ اللعب ، سنصل إلى المالك باستخدام وظيفة git owner ومن هناك سنستخدم
‫مشغل السهم للوصول إلى هذا المندوب الذي تم الاتصال به ، وأخذ أي ضرر وعند تلقي أي ضرر له خاصية
‫الإضافة الديناميكية وظيفة وهي ببساطة تأخذ كائن مستخدم واسم وظيفة.
‫الآن كائن المستخدم هو الكائن الذي نربط الوظيفة من أجله.
‫إنه الفصل الذي يحتوي على وظيفة رد الاتصال وسيكون هذا هو هذا.
‫وأخيرًا لدينا وظيفة رد الاتصال الخاصة بنا ، والتي ستكون أنت.
‫تم أخذ تلف مكون الصحة.
‫نحتاج الآن إلى تذكر عنوان المشغل لأن هذا في الواقع يأخذ عنوان الوظيفة.
‫لذا فإن الضرر الذي تم الحصول عليه الآن لا بد أن يأخذ أي ضرر ويتم إضافته إلى قائمة استدعاء ذلك المندوب.
‫لذلك عندما نولد أحداثًا ضررًا ، سنحصل على بث من هذا المندوب مما سيؤدي
‫إلى استدعاء وظيفة تلقي الضرر.
‫باختصار ، لقد أنشأنا مكونًا صحيًا خاصًا بنا وأضفنا أحد هذه العناصر إلى كل من مخطط
‫الخزان ومخطط البرج.
‫أنشأنا وظيفة رد استدعاء تسمى الضرر الذي تم الحصول عليه وقمنا بتقييدها بمندوب on take أي ضرر.
‫تتمثل الخطوة التالية في إنشاء حدث ضرر والذي سينتج عنه بث "on take" أي مندوب
‫تلف حتى يتم استدعاء تلف وظيفة رد الاتصال عند الاستجابة.
‫وسنقوم بإعداد ذلك في الفيديو التالي.
‫سأراك قريبا.