‫أهلا ومرحبا بكم مرة أخرى.
‫لقد أنشأنا الآن خزانًا يمكنه التحرك وحتى تدوير برجه.
‫ونحن جاهزون الآن لإنشاء فئة برج يمكنها أن ترث بعض الوظائف التي ورثها الخزان
‫من فئة الكبسولة الأساسية.
‫الآن ، بمجرد إنشاء فئة البرج ، سنقوم بإلغاء وظيفة التجزئة حتى نتمكن من تدوير
‫برجها أيضًا.
‫لذا فإن هدفنا هنا هو أن تدور الأبراج بحيث تنظر دائمًا إلى الخزان.
‫بهذه الطريقة ، عندما يبدأون في إطلاق المقذوفات ، سيضربون الدبابة أحيانًا طالما أن الدبابة لا تتحرك
‫بعيدًا عن الطريق بسرعة.
‫وسنكتشف أيضًا كيف يمكننا الحصول على الخزان -.
‫بهذه الطريقة يمكننا استهداف الخزان - وتدوير برج الأبراج باتجاه الخزان -.
‫نحن نستعد لبعض المعارك المقذوفة.
‫لذا فأنا هنا في المحرر وسأنتقل إلى مجلد خزانات النغمات حيث توجد القاعدة
‫- وفصول الخزان.
‫الآن ، أود إنشاء فئة برج على أساس الطبقة الأساسية.
‫الآن ، الطريقة التي فعلنا بها ذلك مع فئة الدبابات كانت على حق.
‫النقر على القاعدة - واختيار إنشاء فئة C ++ مشتقة من طريقة بديلة هي الانتقال
‫إلى الأدوات واختيار فئة C ++ جديدة.
‫ومن هنا يمكننا النقر فوق علامة التبويب التي توضح جميع الفئات والبحث عن قاعدة -.
‫وهنا نرى قاعدتنا - الطبقة.
‫إذا قمت بتحديد هذا والنقر فوق التالي ، فسأقوم الآن بإنشاء فصل دراسي جديد بناءً على القاعدة -.
‫سأتركه في نفس المسار مثل جميع فصول C ++ الأخرى وسأسمي هذا البرج.
‫لننقر على إنشاء فصل دراسي.
‫إذن هذا هو عمري الجديد وبرج دوت.
‫CP الآن أول شيء نحتاجه هو وظيفة التجزئة لأن البرج سيرغب في تدوير
‫برجه لمواجهة -.
‫لذلك سنقوم بإلغاء دالة التجزئة هنا.
‫لذلك سأقوم بإنشاء قسم عام جديد وسنقوم بكتابة علامة الفراغ الافتراضية ، والتي تأخذ
‫تعويمًا يسمى Delta Time ، وهذا تجاوز.
‫الآن سوف ندخل في مزيد من التفاصيل حول الفيديوهات الافتراضية والتجاوزات في مقاطع الفيديو المستقبلية ، لكننا
‫نأخذ بشكل أساسي وظيفة التجزئة الموروثة وننشئ تطبيقًا جديدًا لها.
‫لذلك دعونا نأخذ وظيفة التجزئة وننفذها هنا في Tower CP.
‫الآن علينا أن نبدأ اسم دالة التجزئة ببرج ونقطتين مزدوجتين.
‫وكالعادة ، من الجيد أن نسمي علامة السوبر ونحتاج إلى المرور في وقت دلتا.
‫الآن ما أود القيام به هنا هو تدوير برج الخزان بحيث يهدد البرج الخزان ويكون جاهزًا
‫لإطلاق المقذوفات.
‫لكني أرغب في القيام بذلك فقط إذا كان الخزان في النطاق.
‫الآن ، لمعرفة ما إذا كان الخزان في النطاق أم لا ، نحتاج إلى معرفة المسافة من البرج
‫إلى الخزان.
‫الآن ، هذه أداة صغيرة تمثل أصل العالم.
‫بمعنى آخر ، النقطة في الفضاء حيث X و Y و Z تساوي صفرًا.
‫الآن ، عندما نتحدث عن موقع الممثل ، فإننا نتحدث عن المتجه من الأصل إلى ذلك الموقع.
‫ويمكننا دائمًا الحصول على متجه الموقع هذا باستخدام الحصول على موقع الممثل حتى نتمكن من الحصول
‫على موقع أحد الأبراج وموقع الخزان.
‫وإذا عرفنا هذين الموقعين ، يمكننا حساب المسافة بينهما.
‫الآن ، يمكننا القيام بذلك باستخدام رياضيات المتجهات ، لكن فئة المتجهات F لها وظيفة تسمى dist
‫، وهذه الوظيفة تأخذ متجهات الموقع وما ترجع إليه هو المسافة بينهما.
‫هنا في ملف برج CP ، في وظيفة التجزئة ، سأكتب بضع ملاحظات فقط حتى نعرف ما يفترض
‫بنا القيام به.
‫أولاً ، نحتاج إلى إيجاد المسافة إلى الخزان بعد هذا الفحص لمعرفة ما إذا كان الخزان في النطاق وما
‫إذا كان البرج في النطاق يتجه نحو الخزان.
‫لذلك لدينا بعض المهام هنا.
‫الآن ، لإيجاد المسافة إلى الخزان ، نحتاج إلى التمسك بالخزان.
‫الآن ، مكان جيد للقيام بذلك هو بدء اللعب.
‫لذلك بالإضافة إلى وظيفة التجزئة ، دعنا نمضي قدمًا ونلغي بدء اللعب.
‫لاحظ الآن في Tank H ، بدء اللعب في قسم محمي.
‫سنبقيها محمية في البرج أيضًا.
‫لذلك سنضع القسم المحمي أسفل القسم العام مباشرةً وسنبدأ تشغيله مباشرةً تحت علامة الاختيار.
‫لذلك دعنا ننتقل إلى Tower Dot ، CP ، تنفيذ ، بدء التشغيل ، تأهل تمامًا لاسم الوظيفة ، وكما خمنت على الأرجح
‫، فإننا نطلق على Super Begin Play.
‫الآن من أجل الحصول على الخزان وتخزينه في متغير ، نحتاج إلى متغير من نوع الخزان.
‫لذلك سنضع ذلك هنا في أبراج H في قسم خاص.
‫الآن سيكون هذا الخزان A ، إنه مؤشر ويمكننا ببساطة تسمية هذا الخزان.
‫ولتجنب الاضطرار إلى تضمين Tank H هنا ، يمكننا أن نعلن أننا رأينا مدى أهمية
‫ذلك.
‫الآن لدينا مؤشر الخزان هذا وإذا تمكنا من معرفة كيفية الوصول إلى الخزان ، فيمكننا تخزينه في
‫مؤشر الخزان هنا والبدء في اللعب.
‫أول شيء سأفعله هو تضمين Tank H ، وبهذه الطريقة يمكننا بالفعل استخدام النوع.
‫فكيف نصل إلى الخزان؟
‫حسنًا ، إليك توثيق المحرك غير الواقعي لوظيفة يدوية تسمى الحصول على لاعب بيدق.
‫إنه موجود في احصائيات اللعب.
‫بما أن هذا مفتوحًا ، فسأقوم بنسخ التضمين لإحصائيات اللعب وإلقاء نظرة على
‫بناء الجملة.
‫له مدخلين كائن سياق عالمي.
‫نحن نعلم بالفعل كيفية التعامل مع ذلك ومؤشر اللاعب.
‫وكما رأينا في ألعاب اللاعب الفردي مثل ألعابنا ، فإن مؤشر اللاعب سيكون دائمًا صفر لاعب
‫وهذا سيسمح لنا بالوصول إلى البيدق المقابل للاعب صفر.
‫لذلك دعونا نسمي هذه الوظيفة هنا في Tower Dot CP.
‫سأقوم بلصق التضمين لإحصائيات اللعب الخاصة بك وفي بدء اللعب ، سأقوم بتعيين
‫دبابة مساوية لإحصائيات اللعب الخاصة بك للحصول على لاعب - لكائن سياق العالم.
‫يمكنني تمرير هذا ولمؤشر اللاعب يمكننا تجاوز الصفر.
‫الآن تحقق من الأحمر المتعرج.
‫تقول إنه لا يمكن تعيين قيمة من النوع بيدق إلى كيان من النوع A للدبابات.
‫هذه هي نفس المشكلة التي واجهناها عندما كنا نحاول الاتصال والحصول على وحدة التحكم وتخزين
‫النتيجة في وحدة تحكم اللاعب A.
‫الخزان هو طفل بيدق ، لذا لا يمكننا تخزين نوع أصلي في مؤشر فرعي.
‫يتوجب علينا ينبغي لنا.
‫كنت تفكر في ذلك ، علينا أن نلقي.
‫لذلك سنأخذ القيمة المعادة من هذا ونضعها داخل استدعاء دالة cast.
‫لذلك سوف نقول المدلى بها ونحن نلقي على دبابة.
‫وما نمرره للإلقاء سيكون هذه الدعوة للحصول على بركة اللاعب.
‫فلنضع ذلك هنا بين القوسين.
‫وبعد الصب سيكون لدينا الوصول إلى الخزان.
‫والآن بعد أن أصبح بإمكاننا الوصول إلى الخزان ، يمكننا إيجاد المسافة إلى الخزان والمسافة هي تعويم.
‫لذا يمكننا عمل متغير عائم محلي يسمى المسافة.
‫وما سنجعله مساويًا له هو نتيجة استدعاء دالة F متجه الثابتة dist.
‫تأخذ dist الآن معلمتين من معلمات الإدخال من نوع متجه F.
‫الآن نريد المسافة بين نقطتين في الفضاء.
‫واحد هو موقع البرج.
‫نحن في فئة البرج لذا يمكننا الاتصال بالحصول على موقع الممثل وهذا يعطينا موقع البرج.
‫لكن ماذا عن الخزان؟
‫حسنًا ، يمكننا الاتصال بالدبابات ، والحصول على موقع الممثل ، والآن لدينا المسافة.
‫المشكلة الوحيدة الآن هي أننا نستخدم مؤشر الخزان دون التحقق أولاً للتأكد من أنه ليس
‫فارغًا.
‫لذلك علينا أن نقول ما إذا كان الخزان أولاً ثم يمكننا أخذ استدعاء الوظيفة هذا وسحبه هنا داخل
‫عبارة if.
‫لذلك إذا كان الخزان صالحًا ، فيمكننا الوصول إلى موقعه من خلال الحصول على موقع الممثل.
‫ممتاز.
‫نظرًا لأننا نعمل في بيان if هذا ، سأقوم بنقل هذه التعليقات الأخرى هنا داخلها لأننا نعلم
‫أنه لا يمكننا التحقق لمعرفة ما إذا كان الخزان في النطاق ، إذا لم يكن الخزان صالحًا.
‫لذلك أود أن أتحداك أن تدير البرج نحو الخزان.
‫الآن ، نريد فقط القيام بذلك إذا كان الخزان في النطاق ، فلدينا المسافة.
‫إذن نحن الآن بحاجة إلى متغير نطاق النار.
‫لذلك ، قم بإنشاء عوامة تسمى نطاق النار في فئة البرج وفضح هذا الأمر معك.
‫نود أن نتمكن من تحرير هذا من المحرر.
‫أنت الآن بصدد التحقق لمعرفة ما إذا كان الخزان في النطاق.
‫إذا كان يسمى بتدوير البرج وبرج التدوير يحتاج إلى إلقاء نظرة على الهدف.
‫سوف تمر في موقع الدبابات.
‫لذا أوقف الفيديو مؤقتًا ونفذ هذا السلوك الآن.
‫تمام.
‫لذلك نحن بحاجة إلى متغير نطاق النار.
‫هنا في برج H ، لدينا قسم خاص.
‫سنقوم بعمل طفو.
‫سأطلق على هذا النطاق الناري وسأمضي قدمًا وأبدئه بقيمة 300 فهرنهايت ، على سبيل
‫المثال.
‫لكننا سنجرب هذا لأنه سيكون ملكًا لكم.
‫لذلك أنت ممتلكات.
‫وبما أنني أرغب في أن يكون لجميع الدبابات نفس نطاق إطلاق النار ، فسوف أقوم بعمل هذا وافتراضيه
‫فقط.
‫وبهذه الطريقة لا يمكننا تعديله إلا على المخطط الافتراضي.
‫الآن إذا قمت بتحريره في أي مكان أو ربما قمت بتحرير النسخة فقط ، فلا بأس بذلك تمامًا.
‫إنها حقًا مسألة تفضيل ويمكننا تغييرها لاحقًا.
‫سأعطيها فئة أيضًا وسأطلق عليها اسم فئة القتال.
‫دعنا نذهب إلى Tower CP ولدينا هذه النقطة التالية هنا.
‫تحقق لمعرفة ما إذا كان الخزان في النطاق ، مما يعني أننا بحاجة إلى التحقق لمعرفة ما إذا كانت المسافة أقل
‫من أو تساوي نطاق إطلاق النار.
‫لدينا أقل من أو يساوي وليس فقط مساوٍ له ، لأنه من إطار إلى إطار ، قد تكون المسافة في الواقع
‫أكبر من نطاق إطلاق النار ، وإطار واحد وأقل من نطاق إطلاق الإطار التالي الذي يمر تمامًا بمدى إطلاق
‫النار.
‫لذلك قد لا يصبح في الواقع مساويًا تمامًا لمدى إطلاق النار.
‫في الواقع ، مع قيم الفاصلة العائمة ، من النادر جدًا وجود عوامين متساويين تمامًا.
‫لذلك لدينا هذا إذا تحققنا وإذا وصلنا إلى الداخل ، فهذا يعني أن المسافة أقل من أو تساوي
‫نطاق النار.
‫الخزان الآن في النطاق ، مما يعني أنه يمكن نقل هذا التعليق هناك.
‫الآن ، إذا كنت في النطاق ، قم بتدوير البرج باتجاه الخزان ، فهذا يعني أننا سنستدعى وظيفة البرج
‫الدوار.
‫هذه هي وظيفتنا المحمية التي وضعناها في قاعدة البود.
‫الآن قم بتدوير البرج ويلقي نظرة على الهدف ونحتاج إلى موقع الخزان.
‫لذلك سيكون هذا دبابة الحصول على موقع الممثل.
‫وبهذا نحن الآن نطلق على برج التدوير فقط إذا كان الخزان في النطاق.
‫لذلك دعونا نجمع هذا ونرى كيف يعمل.
‫لذلك عدنا إلى هنا في المحرر وما يتعين علينا القيام به هو الدخول في المخططات والبيادق والعثور
‫على برج بيدق BP وفتح محرر مخطط كامل.
‫الآن في أعلى اليمين ، نرى بيدق أساسي من فئة الوالدين ، لكننا نريد أن تكون فئة الوالدين هي البرج حتى
‫نتمكن من الانتقال إلى إعدادات الفصل وفئة الوالدين والبحث عن البرج وتحديده.
‫الآن برج البيدق الخاص بنا قائم على فئة البرج.
‫الآن دعونا نرى ما سيحدث عندما نضغط تشغيل.
‫حسنًا ، لذلك أنا أقوم بتحريك الخزان.
‫نحن لسنا في النطاق ، لذلك لا نرى أي حركة من الأبراج.
‫لكن إذا دخلت في النطاق ، انظر إلى ذلك.
‫الآن يتابعونني ويبدو الأمر مهددًا للغاية.
‫الآن 300 وحدة ليست بعيدة.
‫لذا ما أود فعله هو تعديل تلك المسافة.
‫لذا من هنا في BP Pawn Turret ، سأختار BP Pond Turret self.
‫وهنا قسم القتال.
‫سوف أمضي قدمًا وأضبط هذا على حوالي 700.
‫الآن ، إذا قمت بالضغط على زر التشغيل ، فسوف أرى أنهم لن يدوروا أثناء عودتي إلى هنا.
‫ولكن بمجرد وصولي إلى النطاق ، فإنهم الآن ينظرون إلي.
‫في احسن الاحوال.
‫باختصار ، لقد أنشأنا فئة البرج.
‫لدينا الآن عدو للدبابة.
‫قمنا أيضًا بتدوير برج البرج باتجاه الخزان في وظيفة التجزئة ونقوم بذلك فقط إذا كان
‫الخزان في نطاق النار.
‫لقد كشفنا أيضًا عن متغير نطاق النار بحيث يمكن تعديله في المخطط.
‫نحن جاهزون تقريبًا للقتال.
‫سنبدأ في إعداد ذلك في مقاطع الفيديو القادمة.
‫سأراك قريبا.