‫أهلا ومرحبا بكم مرة أخرى.
‫الآن لدينا حركة لـ - ، لكننا لا ندير الجزء العلوي من - ، الذي نسميه
‫البرج.
‫لذلك نود أن نكون قادرين على القيام بذلك باستخدام الماوس.
‫الآن ، ألق نظرة على ما يحدث هنا.
‫أثناء تحريك مؤشر الماوس الخاص بي في جميع أنحاء العالم ، أحصل على هذه الكرة الحمراء.
‫هذا هو مجال تصحيح الأخطاء الذي أرسمه في مساحة ثلاثية الأبعاد.
‫لاحظ الآن عندما أتحرك على الحائط ، أن الكرة تتحرك عكس سطح الجدار.
‫لذلك أينما يتحرك مؤشر الماوس ، أشعر بالخوف الذي يتوافق مع أي شيء أصطدم
‫به بناءً على موقع المؤشر.
‫وهذا سيكون مفيدًا لنا حتى نتمكن من الحصول على موقع في الفضاء يمكننا أن ندير برجنا
‫نحوه.
‫الآن ، من أجل القيام بذلك ، هناك بعض الوظائف التي نحتاجها على وحدة التحكم ، لذلك علينا الوصول إلى تلك
‫الوظائف على وحدة التحكم.
‫وفي هذا الفيديو ، سنعمل على إعداد ذلك وسنناقش أيضًا كيف سيشمل
‫هذا مفهومًا يُعرف باسم Cast.
‫الآن ، السبب وراء رغبتنا في استخدام وحدة التحكم هو وجود وظائف على وحدة التحكم تسمح لنا
‫بالحصول على نتيجة النتيجة تحت المؤشر.
‫الآن نحن نتحدث عن مؤشر الماوس.
‫لنفترض أن هذه هي شاشتنا وإليك مؤشر الماوس.
‫وتتوافق النقطة الموجودة على رأس المؤشر مع موقع على الشاشة.
‫الآن إذا قمنا بتحريك المؤشر حوله ، فإن هدفنا هو أن يتم تدوير الجزء العلوي من الخزان الخاص
‫بنا بحيث يتم تدوير هذا الجزء العلوي من شبكتنا بحيث يواجه اتجاه هذا المؤشر.
‫الآن إذا قمنا بتحريك المؤشر ، فهناك وظيفة على وحدة التحكم يمكننا استخدامها للحصول
‫على الموقع المقابل لذلك المؤشر.
‫إذا أردنا رسم خط مستقيم من الكاميرا باتجاه المؤشر وضربنا شيئًا ما في
‫العالم ، فيمكننا الحصول على هذا الموقع واستخدام هذا الموقع لضبط دوران برج الخزان.
‫اسمحوا لي أن أريكم ما أعنيه.
‫الآن ، من أجل الحصول على موقع الوصول هذا المطابق لمؤشرنا ، نحتاج إلى استخدام وحدة التحكم.
‫الآن ، دعنا نتحدث عن جهاز التحكم للحظة وجيزة.
‫لنفترض أن لدينا بيدقنا في العالم.
‫البيدق سيكون له جهاز تحكم.
‫هذا شيء غير مرئي مرتبط بالبيدق.
‫الآن ، بالنسبة إلى البيدق الخاص بنا ، ستحصل وحدة التحكم الخاصة بنا على وحدة تحكم اللاعب من النوع
‫A وفي بداية اللعبة ، ستمتلك وحدة التحكم البيدق.
‫هذا هو السبب في أنه يمكننا أن نرى من وجهة نظر الكاميرا التي تنتمي إلى خزان البيدق لدينا.
‫الآن يمكننا الوصول إلى وحدة التحكم هذه.
‫ترث فئة الخزان لدينا وظيفة تسمى Get Controller.
‫إنها موروثة من - الطبقة.
‫لذا ما نود فعله هو الحصول على وحدة التحكم هذه وتخزينها في متغير حتى نتمكن من استخدامها للوصول
‫إلى الوظيفة التي نحتاجها للحصول على نتيجة النتيجة تحت المؤشر.
‫لذلك دعونا نجهز أنفسنا لذلك.
‫أنا الآن هنا في فئة الدبابات والمكان الذي نحتاجه للوصول إلى وحدة التحكم الخاصة بنا هو بدء اللعب.
‫إذا قمنا بذلك في المُنشئ ، فهذا مبكر جدًا وقد لا يكون لدينا وحدة تحكم صالحة حتى الآن.
‫لذلك سنحتاج إلى وظيفة بدء التشغيل هنا في فئة الخزان.
‫الآن لدينا هنا في فئة بيس بونج وحتى الآن لا نستخدم بداية اللعب في فئة
‫بيس بونج.
‫لذا ما أود فعله هو نقله إلى فئة الخزان.
‫لذلك سأقوم بتسليط الضوء على بدء التشغيل ، بما في ذلك التعليق والقسم المحمي هنا وسأقوم
‫ببساطة بقصه.
‫ثم عدت إلى مرحلة الخزان ، سأقوم بلصقها.
‫دعنا نضيف هذا القسم المحمي هنا أعلى القسم الخاص مباشرة مع بدء اللعب بالداخل.
‫الآن قمنا بإزالة "بدء اللعب" من البيدق الأساسي.
‫لم يعد لدينا هنا ، لكننا نحتاج أيضًا إلى إزالته من قاعدة بركة cpp.
‫ها هو.
‫يمكننا المضي قدمًا وحذفها هنا والآن أعلناها هنا في Tank H ، لكننا نحتاج أيضًا
‫إلى تعريفها في الخزان CPP.
‫لذلك سأقوم بتعريف الوظيفة مباشرة أسفل مكون إدخال مشغل الإعداد.
‫لذلك سيكون باطلاً ابدأ اللعب بدون معلمات الإدخال.
‫هناك جسم الوظيفة ونحتاج أيضًا إلى خزان يحدد اسم الوظيفة مسبقًا.
‫الآن نحن نعلم أنه من المهم أن نطلق على اللعبة دورًا كبيرًا.
‫وبهذه الطريقة ، سيستمر استدعاء أي وظيفة في وظيفة بدء التشغيل وأي فئة من الفئات الرئيسية.
‫لذلك بدأنا اللعب هنا.
‫هذا هو المكان الذي يمكننا فيه الحصول على وحدة التحكم الخاصة بنا وتخزينها في متغير.
‫لنعد إلى Tank H وننشئ متغيرًا.
‫الآن سيكون هذا خاصًا وسأقوم بإلصاقه هنا في أسفل القسم
‫الخاص وسيكون نوع مؤشر وحدة تحكم اللاعب ويمكننا استدعاء مرجع وحدة تحكم اللاعب هذا.
‫سيكون هذا مرجعنا إلى وحدة تحكم اللاعب.
‫الآن نحن لا نتحدث عن مرجع C ++.
‫لا يزال هذا مجرد مؤشر ، لكننا سنستخدمه للإشارة إلى وحدة تحكم اللاعب.
‫الآن لدينا متغير مرجع وحدة تحكم اللاعب من نوع وحدة تحكم المشغل ونحن على استعداد لتخزين وحدة
‫التحكم في هذا المؤشر.
‫لنعد إلى Tank Dot CP هنا ونبدأ اللعب ونحاول القيام بذلك.
‫لذا.
‫ما سأفعله هو أن أقول لاعب ، وحدة تحكم ، المرجع يساوي وسأحاول استدعاء وحدة تحكم.
‫الآن الحصول على تحكم ، كما ذكرت في - فئة.
‫يتيح النقر بزر الماوس الأيمن والانتقال إلى التعريف ولاحظ أن هذه الوظيفة تقوم بإرجاع وحدة تحكم A.
‫الآن المتغير الخاص بنا هو من نوع وحدة تحكم المشغل ، وليس وحدة تحكم.
‫إذن ما نحاول القيام به هنا هو أخذ القيمة المعادة من الحصول على وحدة التحكم ، وهي من
‫نوع مؤشر وحدة التحكم ونحاول تخزينها في مؤشر وحدة تحكم اللاعب A.
‫لاحظ أننا نرى اللون الأحمر المتعرج هنا.
‫تقول قيمة النوع.
‫لا يمكن تعيين مؤشر تحكم إلى كيان من النوع.
‫وحدة تحكم اللاعب.
‫حصلنا على خطأ.
‫دعنا نلقي نظرة هنا على وثائق وحدة التحكم.
‫إلق نظرة.
‫ها هي وحدة التحكم.
‫وتقول الميراث ، التسلسل الهرمي.
‫وأسفل وحدة التحكم نرى وحدة تحكم وجهاز تحكم في اللاعب.
‫هذا يعني أن وحدة التحكم في اللاعب هي فئة تابعة لوحدة التحكم.
‫الآن ، في C ++ ، لا يمكننا الحصول على مؤشر من النوع.
‫وحدة تحكم اللاعب تخزن قيمة عنوان وحدة التحكم.
‫المتحكم هو نوع الأصل.
‫وحدة تحكم اللاعب هي نوع الطفل.
‫لا يمكنك أخذ كائن من النوع الأصل وتخزينه في مؤشر من النوع الفرعي.
‫فكيف نتغلب على هذا؟
‫إذن هذه هي مشكلتنا.
‫ترجع وظيفة الحصول على وحدة التحكم عنوان وحدة التحكم A.
‫الآن ، هذا شيء يمكننا تخزينه في مؤشر وحدة تحكم A ، لكن لا يمكننا تخزينه في مؤشر وحدة تحكم
‫اللاعب A.
‫الشيء المضحك هو أن الكائن الذي تم إرجاعه بواسطة وحدة التحكم هو في الواقع وحدة تحكم اللاعب.
‫لذلك لدينا هذا العنوان في شكل مؤشر تحكم ونعلم أنه يخزن وحدة تحكم اللاعب ، ولكن إذا كان لدينا
‫في شكل وحدة تحكم A ، لا يمكننا الوصول إلى الوظيفة التي نحتاجها لأنها موجودة
‫على وحدة تحكم اللاعب .
‫تسمى الوظيفة الحصول على نتيجة تحت المؤشر.
‫الآن إذا كانت لدينا قيمة لمؤشر وحدة التحكم من النوع A وحاولنا الحصول على هذه الوظيفة الموجودة على
‫وحدة تحكم اللاعب ، فسوف نفشل في القيام بذلك.
‫سنحصل على خطأ في التجميع.
‫بما أننا نعلم أن الكائن نفسه عبارة عن وحدة تحكم في المشغل ، فإنه يتم تخزينه في مؤشر وحدة تحكم.
‫كيف نتغلب على هذه المشكلة؟
‫الجواب هو أننا يجب أن نلقي.
‫نحن نعلم أن وحدة التحكم هي فئة الأصل وأن وحدة التحكم في اللاعب هي فئة الأطفال.
‫ونعلم أنه لا يمكن أن يكون لدينا وحدة تحكم مخزنة في مؤشر وحدة تحكم اللاعب A.
‫نحن نعلم أنه يمكننا الذهاب في الاتجاه المعاكس ولدينا مخزن لمؤشر وحدة التحكم ، وهو كائن لوحدة تحكم
‫اللاعب.
‫هذا في الواقع ما نراه عندما نسميه الحصول على وحدة تحكم ، فإنه يعيد مؤشر وحدة تحكم يشير
‫إلى وحدة تحكم اللاعب A.
‫لذلك إذا كانت لدينا قيمة لمؤشر وحدة تحكم من النوع A ، فيمكننا استخدام وظيفة خاصة تسمى
‫cast لتحويل نوع المؤشر إلى مؤشر تحكم مشغل A.
‫لذا فإن الصب يغير نوع مؤشر ما إلى نوع مؤشر آخر طالما أن الكائن نفسه هو النوع الذي
‫نحاول الإدلاء به.
‫الآن ، إذا حاولنا الإرسال إلى نوع غير صالح ، على سبيل المثال ، لدينا مؤشر تحكم يشير
‫إلى كائن تحكم اللاعب.
‫إذا حاولنا الإدلاء بالقول ، حرف ، فإن وظيفة cast ترجع فارغة ونقول إننا نفشل في التمثيل.
‫لذا فإن وظيفة الصب تبدو هكذا.
‫إنه قالب تمامًا مثل إنشاء كائن فرعي افتراضي.
‫ستتكيف وظيفة القالب هذه مع النوع المختار وفي هذه الوظيفة ، النوع الذي نمرره هو النوع الذي
‫نختاره أيضًا.
‫لذلك نجتاز هذا النوع.
‫نود وضع اثنين داخل أقواس الزاوية ونمرر المؤشر الذي نرغب في وضعه في الأقواس.
‫هنا مثال.
‫لنفترض أننا نرغب في الإرسال إلى وحدة تحكم اللاعب ومؤشر من نوع وحدة التحكم من النوع A.
‫نمرر المؤشر بين القوسين والنوع الذي نضعه بين قوسين بزاوية.
‫وما يتم إرجاعه هو قيمة مؤشر وحدة تحكم اللاعب من النوع أ.
‫إذن ، هذا هو استدعاء الوظيفة حيث نمرر النوع الموجود بين قوسي الزوايا وقيمة مؤشر وحدة
‫التحكم التي نحصل عليها من الحصول على وحدة التحكم يمكن أن تدخل بين الأقواس.
‫لذلك نحن بحاجة إلى تحديد هذه القيمة التي نحصل عليها من الحصول على وحدة تحكم.
‫سيكون هذا هو التحدي الخاص بك.
‫لذا في بدء اللعب ، استخدم وظيفة الحصول على وحدة التحكم وقم بتمرير هذه القيمة إلى وظيفة الإرسال وإرسالها
‫إلى وحدة تحكم اللاعب.
‫وبعد ذلك يمكنك تخزين النتيجة في مؤشر مرجع وحدة التحكم في المشغل ، وهو من النوع
‫A.
‫أوقف الفيديو وقم بإجراء التمثيل.
‫تمام.
‫لقد انتهينا تقريبًا من كل العمل هنا ونحتاج فقط إلى الإدلاء به.
‫إذن ما سنفعله هو استدعاء دالة الصب ، والتي تحتوي على أقواس زوايا بالإضافة إلى أقواس.
‫وما يوضع بين القوسين هو القيمة التي نرغب في تحديدها.
‫احصل الآن على وحدة التحكم بإرجاع مؤشر وحدة التحكم من النوع أ.
‫سأقوم بتحريك ذلك هنا إلى الأقواس.
‫والنوع الذي نختاره هو وحدة تحكم اللاعب.
‫لذا مرة أخرى نحن نأخذ القيمة التي تم إرجاعها من خلال الحصول على مراقب الحسابات.
‫يؤدي هذا إلى إرجاع مؤشر مراقب أو عنوان.
‫ثم نستخدم Cast لإرسالها إلى وحدة تحكم اللاعب A.
‫نعلم أن الكائن الذي تم إرجاعه بواسطة وحدة تحكم البوابة هو كائن وحدة تحكم لاعب مخزن في مؤشر
‫وحدة تحكم.
‫لذلك بعد أن قمنا بإلقاء هذا ، ما يتم إرجاعه هو مؤشر وحدة تحكم اللاعب من النوع أ.
‫لذلك نحن نخزن ذلك في وحدة تحكم اللاعب المرجع.
‫الآن بعد أن أصبح لدينا وصول إلى وحدة التحكم في شكل مؤشر وحدة تحكم اللاعب A ، يمكننا الوصول إلى الوظيفة
‫التي نحتاجها للحصول على نتيجة نتيجة التتبع تحت المؤشر.
‫باختصار ، استخدمنا الحصول على وحدة تحكم للوصول إلى وحدة التحكم.
‫نستخدم أيضًا وظيفة الإرسال للإرسال من مؤشر وحدة التحكم من النوع A إلى مؤشر وحدة تحكم اللاعب
‫A.
‫الآن يمكننا الوصول إلى الوظيفة التي نحتاجها ، وهي الحصول على نتائج ضرب تحت المؤشر الموجود في فئة
‫وحدة تحكم اللاعب.
‫سنبدأ باستخدام هذه الوظيفة في الفيديو التالي.
‫سأراك قريبا.