‫أهلا ومرحبا بكم مرة أخرى.
‫نحن الآن نتحرك دباباتنا للأمام وللخلف ، لكن ليس لدينا طريقة لتوجيه الخزان فعليًا.
‫في هذا الفيديو ، سنعمل على تدوير الخزان فعليًا باستخدام شيء يسمى الدوران المحلي.
‫هذا هو التناظرية التناوب لإضافة الفاعل المحلي تعويض.
‫الآن إضافة الإزاحة المحلية للممثل تحتوي على معلمات إدخال متعددة وقد مررنا فقط في الأولى لأن الثلاثة
‫الأخرى كانت اختيارية.
‫لكن أحد هؤلاء الثلاثة الآخرين كان له علاقة بالكنس.
‫وسنناقش قليلاً حول الكنس قبل أن نواصل تنفيذ التناوب.
‫لذا عدت إلى الوثائق الخاصة بـ ADD Actor Local Offset.
‫لذلك دعونا نلقي نظرة على معلمات الإدخال هذه مرة أخرى.
‫الثانية تسمى B Sweep وهي منطقية.
‫الآن ، إذا قمنا بالتمرير لأسفل أكثر قليلاً وقراءة المعلومات هنا من أجل B sweep ، فإنه يقول
‫ما إذا كنا ننتقل إلى موقع الوجهة مما يؤدي إلى التداخلات على طول الطريق والتوقف عن الهدف إذا تم حظره
‫بواسطة شيء ما.
‫ويضيف أيضًا أنه يتم مسح مكون الجذر فقط والتحقق منه لمنع الاصطدام.
‫تتحرك المكونات الفرعية بدون كنس.
‫إذا تم إيقاف الاصطدام ، فلن يكون له أي تأثير.
‫لذلك دعونا نتحدث عما يعنيه هذا الآن في برمجة الألعاب ، فإن الكنس هو تقنية يقوم بها المحرك
‫، طالما تم تمكين الكنس.
‫إذا كان لدينا جسم متحرك مثل كرة ممثلة بهذه الدائرة ، فإن كل إطار أثناء تحرك هذه الكرة
‫، يقوم المحرك بإجراء فحوصات مسح.
‫هذا يعني أنه يتحقق لمعرفة ما إذا كانت هذه الخطوة لهذا الإطار المحدد ستؤدي إلى تداخل
‫بين كائنين.
‫إذن ، هذه الكتلة ممثلة بهذا المستطيل.
‫الآن دعنا نفكر في أن هذين هما الشيءان الوحيدان في العالم.
‫لذلك ، أثناء تمكين الكنس حيث تتحرك الكرة باتجاه الكائن ، يتحقق المحرك لمعرفة ما إذا
‫كان هذان الكائنان متداخلين.
‫الآن ، مع استمرار الكرة في الحركة ، دعنا نقول خلال أحد هذه الإطارات أن الكرة كانت ستتحرك
‫بحيث تتداخل مع الكائن الآخر.
‫الآن ما يفعله التمكين هو أن المحرك سوف يكتشف هذا التداخل ويحرك هذا المجال للخلف
‫لهذا الإطار المعين بحيث لا يخترق الكائن فعليًا.
‫الآن لا نرى الكرة تخترق الجسم أبدًا.
‫يمسك المحرك بالتداخل قبل تنفيذ الحركة فعليًا.
‫والنتيجة هي أننا نرى أن الكرة تتوقف على مسافة قصيرة من التداخل.
‫فإذا كان هذا المستطيل عبارة عن جدار ، على سبيل المثال ، فإن الكرة ستتوقف عند سطح الجدار.
‫هذا ما يحققه الكاسح لنا.
‫الآن تشير الوثائق إلى أنه إذا تم إيقاف الاصطدام ، فلن يكون لذلك أي تأثير.
‫لذلك يجب تمكين الاصطدام حتى يعمل الكنس.
‫لذا بالعودة إلى الخزانات CP في وظيفة النقل ، إليك دعوتنا لإضافة تعويض محلي للممثل وإذا أردنا
‫يمكننا تمرير معامل إدخال آخر هنا ، والمعاملة الثانية هي طريقة المسح المنطقية حتى نتمكن
‫من المرور هنا.
‫لذلك دعونا نجمع هذا ونرى تأثير تمكين الكنس.
‫الآن إذا ضغطنا على زر التشغيل وحاولنا التحرك عبر الحائط ، على سبيل المثال ، فسنرى أننا نتحرك مباشرة
‫عبر الحائط.
‫لذلك هناك شيء لا يعمل بشكل جيد هنا.
‫الآن دعونا نلقي نظرة على ماهية هذا المسار لخزان بركة BP.
‫أذكر ، استخدمنا مكون الكبسولة للطريق.
‫لذلك مع مكونات الكبسولة المختارة في خزان بركة BP.
‫دعنا نذهب إلى لوحة التفاصيل ونقوم بالتمرير لأسفل وسنرى هنا قسمًا يسمى Collision.
‫وهنا نرى إعدادات التصادم المسبقة ولديها قائمة منسدلة.
‫لذلك دعونا نوسع ذلك.
‫الآن ، يمكن ضبط Collision Presets على أي عدد من الخيارات وبشكل افتراضي نرى تداخلًا ديناميكيًا.
‫الآن ، اعتمادًا على إصدار Unreal Engine الذي تستخدمه.
‫قد ترى شيئًا آخر هنا ، لكن يمكننا تغيير هذا.
‫إذا حددنا القائمة المنسدلة واخترنا حظر كل العناصر الديناميكية ، فستتغير الخيارات ذات اللون الرمادي أدناه.
‫تذكر أننا كنا متداخلين مع جميع العناصر الديناميكية وهنا نرى ثلاثة أعمدة من مربعات الاختيار.
‫هذه استجابات تصادم والعمود الموجود على اليسار يعرض قائمة بأنواع كائنات التصادم.
‫لذا فإن أي مكون له نوع كائن التصادم الخاص به.
‫لاحظ أنه يمكننا رؤية نوع الكائن للكبسولة التي تم ضبطها على ديناميكية العالم.
‫وعندما نغير الإعدادات المسبقة للتصادم لحظر جميع العناصر الديناميكية ، سترى أنه
‫تم فحص جميع استجابات التصادم للحظر استجابةً لجميع أنواع كائنات التصادم الأخرى.
‫لذلك دعونا نضغط على "تشغيل" ونرى ما يحدث عندما نحاول المرور عبر الأشياء.
‫سترى أننا توقفنا عن التداخل مع.
‫البرك الأخرى.
‫الآن ، إذا قمت بتحريك الخزان حتى نتمكن من محاولة التداخل مع الجدار والالتفاف حول البرك الأخرى.
‫الآن ، إذا ضغطت على "تشغيل" ، سأحجب الجدار أيضًا.
‫لذلك ، فإن كتلة التصادم مسبقة الضبط ، كلها ديناميكية تحدد استجابة التصادم لحظر جميع أنواع الكائنات الأخرى.
‫ويمكنك دائمًا رؤية نوع كائن التصادم لمكون معين عن طريق تحديده في لوحة المكونات
‫والتمرير لأسفل إلى قسم التصادم في لوحة التفاصيل وفتح القائمة المنسدلة لـ Collision
‫Presets.
‫لقد حددت الشبكة الأساسية ونوع الكائن الخاص بها ديناميكي عالمي وتم ضبطه على حظر الكل.
‫لذلك نرى الآن أن الكنس يعمل منذ أن قمنا بتعيين إعدادات الاصطدام المسبقة لتركيبة الكبسولة لمنع كل
‫الديناميكية.
‫ورأينا في الوثائق أن مكون الجذر فقط هو الذي تم مسحه وفحصه لمنع الاصطدام.
‫لذلك لا يهم حقًا ما تم ضبط المكونات الأخرى عليه.
‫نحن نتحقق فقط لمعرفة ما إذا كان المكون الجذر يحظر شيئًا ما.
‫الآن ، إحدى المشكلات التي أوقفت بعض الطلاب هي أنهم لا يستطيعون التحرك بمجرد تعيين الكبسولة
‫لمنع كل ديناميكية.
‫الآن ، قد يكون أحد أسباب ذلك أن كبسولتك متداخلة مع الأرضية.
‫إذا كانت الكبسولة متداخلة مع الأرضية ، فلن تكون قادرًا على الحركة لأن المحرك
‫لن يسمح للخزان الخاص بك بالتحرك إذا كان مكون الكبسولة متداخلاً مع شيء تم ضبطه على منعه.
‫لذا فإن الحل السهل لذلك هو التأكد من عدم تداخل الكبسولة مع الأرضية.
‫الآن ، يمكنك الذهاب إلى خزان BP الخاص بك والتأكد من أن كبسولتك أعلى العجلات هنا.
‫سأذهب إلى العرض الهجائي.
‫وحدد الشبكة الأساسية الخاصة بي وقم بإسقاطها فقط.
‫لذلك تكون العجلات أسفل مكون الكبسولة مباشرة.
‫الآن إذا كانت شبكتك على الأرض فقط وكانت الكبسولة فوق الشبكة مباشرة.
‫يجب أن تكون قادرًا على التحرك.
‫لذلك سوف أقوم بتشغيل اللعب وها نحن ذاهبون.
‫والآن بعد أن ابتعدنا عن الطريق ، حان الوقت لبدء تنفيذ التناوب.
‫دعنا نعود إلى إعدادات المشروع الخاصة بنا.
‫لذلك نذهب لتحرير إعدادات المشروع ، وانتقل لأسفل إلى الإدخال وفي قسم الإدخال لدينا تعيينات المحاور الخاصة بنا.
‫الآن لقد اعتنينا بالفعل.
‫تقدم إلى الأمام.
‫حان الوقت للاعتناء بالمرحلة التالية التي تسمى Turn and Turn ، حيث تم تخصيص D و A لها حيث يحتوي
‫D على مقياس من واحد و A له مقياس سلبي.
‫نود استخدام D و AX لتدوير الخزان.
‫لربط دالة بتعيين محور الدوران ، نحتاج إلى وظيفة لربطها.
‫لذا عدنا إلى رمز V وسأنتقل إلى ملف الخزان حتى نتمكن من إنشاء وظيفة لربطها بتعيين محور
‫الدوران هذا.
‫الآن سأسمي هذه الدالة الفراغية بدورها تمامًا مثل الحركة.
‫يحتاج إلى معلمة إدخال تعويم وسنسمي هذه القيمة.
‫لقد أعلنا عن هذه الوظيفة ، دعنا نحددها وخزان CP وسأضعها تحت وظيفة الحركة
‫مباشرة.
‫لذلك أعطيته جسمًا وظيفيًا وأحتاج إلى اسم الفئة جنبًا إلى جنب مع النقطتين المضاعفتين قبل اسم الوظيفة
‫مباشرة.
‫الآن لدينا وظيفة مناسبة.
‫الآن ، هذا ليس الشيء الوحيد الذي يتعين علينا القيام به.
‫نحتاج إلى التأكد من أن هذه الوظيفة مرتبطة بتعيين المحور المسمى الانعطاف.
‫نقوم بذلك في مكون إدخال مشغل الإعداد ونفعل ذلك تمامًا كما فعلنا في تعيين محور التقدم للأمام.
‫لذلك سنقول مكون إدخال اللاعب ، سنستخدم عامل السهم وربط المحور.
‫الآن ستكون المعلمة الأولى هي اسم تعيين المحور ملفوفًا في ماكرو نصي.
‫لذلك سنقول انعطف حيث كان هذا هو اسم تعيين المحور.
‫التالي هو الكائن الذي نربط الوظيفة من أجله.
‫يمكننا تمرير هذا وأخيرًا نمرر الدالة التي نرغب في ربطها مرة أخرى.
‫نحتاج إلى عنوان المشغل وسيكون دور الخزان.
‫لذا فالأمر بهذه السهولة.
‫لقد ربطنا وظيفة الانعطاف بتعيين محور الدوران.
‫الشيء الوحيد المتبقي هو فعل شيء ما في وظيفة الدوران.
‫لقد رأينا الآن أن لدينا إزاحة محلية لممثل ADD ، ولكن هناك تناظرية تناوبية لهذه الوظيفة
‫وتسمى بالدوران المحلي لممثل ADD.
‫ما يفعله هذا هو إضافة دوران محلي للممثل كما يوحي اسمه ، وسترى أن هناك نسختين
‫مختلفتين من الوظيفة ، أحدهما يأخذ دوار F والآخر يأخذ شيئًا يسمى
‫F quad.
‫سنستخدم النسخة التي تأخذ دوار F.
‫إنه يسمى دلتا التناوب.
‫ومثل الإزاحة المحلية لـ ADD Actor ، يمكن أن تأخذ أيضًا معلمة مسح ونفس معلمات الإدخال الأخرى مثل الإزاحة
‫المحلية للممثل الإضافي.
‫وهذه المعلمات الثلاثة الأخيرة اختيارية ، تمامًا مثل إضافة الإزاحة المحلية للممثل.
‫لذا فبدلاً من متجه F ، سنمر في دوار F.
‫الآن مرة أخرى هنا في وظيفة الدوران ، إذا أنشأنا دوار F وسمينا هذا دوران دلتا ، فسنرى أنه إذا نقرنا
‫بزر الماوس الأيمن على F rotator وانتقلنا إلى التعريف ، فإننا ننتقل إلى الدوار وسنرى ثلاثة
‫متغيرات العضو العام هنا من النوع float.
‫الآن تمامًا مثل الدوار F المتجه F يحتوي على هذه المكونات الثلاثة فقط بدلاً من X و Y و Z ، فلدينا
‫درجة الانحراف واللف.
‫الآن ، الانعراج هو المكون الذي نهتم به.
‫تقول الدوران حول المحور العلوي بين قوسين حول المحور Z.
‫وهذا هو النوع الوحيد من التدوير الذي نهتم بالدوران حول المحور Z.
‫هكذا يمكننا توجيه دبابتنا.
‫الآن ، سأوضح لكم أن هناك العديد من المنشئات لـ F rotator أيضًا ، وأن الافتراضي
‫مرة أخرى لا يقول أي تهيئة ، تمامًا كما هو الحال مع المتجه F.
‫لذلك يمكننا استخدام العنصر الذي يأخذ عددًا عشريًا واحدًا وستتم تهيئة جميع المكونات إلى تلك القيمة
‫العائمة.
‫يوجد واحد به ثلاث قيم عائمة ويمكنك إلقاء نظرة ورؤية بعض القيم الأخرى.
‫الآن ، سأشير أيضًا إلى أنه لا يوجد محور دوار ، وبالمناسبة ، هذا هو محور دوار صفري ثابت.
‫لهذا السبب يمكننا العودة إلى الخزان CP ونقول شيئًا مثل يساوي F rotator zero rotator zero rotator هو متغير عضو
‫ثابت ويمكنك الوصول إلى وظائف الأعضاء الثابتة والمتغيرات مثل هذا عن طريق تحديد اسم الفئة
‫باستخدام مشغل دقة النطاق والإشارة إلى ذلك الثابت متغير أو وظيفة بالاسم.
‫هذا ما نفعله معك هنا.
‫إحصائيات اللعب الحصول على ثواني دلتا العالمية ثابتة.
‫الوظيفة ، مما يعني أننا لسنا بحاجة إلى مثيل حقيقي لفئة إحصائيات اللعبة حتى نتمكن من
‫الوصول إلى هذه الوظيفة الثابتة.
‫إنه موجود بالفعل.
‫نفس الشيء مع صفر محور دوار وصفر ناقل.
‫لذلك سأغلق الجزء الدوار h ولدينا دوران دلتا هذا ويتم تهيئته إلى محور دوار
‫صفري.
‫الآن تم تحديد درجة صوتك ودورك تمامًا مثل X ، و Y و Z تم استبعادهما للمتجه F.
‫لذلك سنحتاج إلى تغيير هذا المكون الخاص بك.
‫لذا مثلما فعلت مع موقع دلتا الخاص بنا في وظيفة MOV ، فلنقم بإنشاء بعض الشفرة الكاذبة لدورات
‫دلتا.
‫نعم ، نريد أن يتم ضبطكم جميعًا على قيمة يتم قياسها بواسطة وقت دلتا بالطبع ، لأننا نريد أن يكون هذا التحول مستقلاً
‫عن معدل الإطارات ، لكننا نحتاج أيضًا إلى نوع من سرعة الدوران يمكننا أن نطلق عليها معدل الدوران
‫هذا.
‫لذا بمجرد أن نضبط ذلك ، نعم ، يمكننا إضافة ذلك الدوران المحلي الذي سيقوم بتدوير الممثل
‫وفقًا للدوران F لكل إطار وسيتم قياس ذلك حسب القيمة.
‫لذلك سيكون صفرًا إذا لم نضغط على أي مفاتيح وسيكون لها قيمة إذا ضغطنا على DX
‫والفأس.
‫حتى الآن لديك التحدي.
‫سيعمل هذا تمامًا مثل إضافة الإزاحة المحلية للممثل.
‫الاختلاف الوحيد هو أننا نناوب الممثل الآن.
‫لذلك بما أننا نحتاج إلى نوع من معدل الدوران لتدوير الممثل ، فسوف تقوم بإنشاء متغير معدل
‫الدوران ، وجعل هذا عائمًا ووضعه في القسم الخاص بجوار متغير السرعة مباشرةً.
‫كشف هذا المتغير مع الخاصية الخاصة بك واختيار محددات الخاصية الجديدة المناسبة.
‫الآن في وظيفة الانعطاف ، ستقوم بتعيين دوران دلتا على وجه الخصوص ، فنحن نهتم بالمكون الخاص
‫بك ، فقم بتعيين القيمة التي تساوي القيمة مضروبة في متغير معدل الدور لدينا وأيضًا الضرب في وقت دلتا ، ومن ثم تصبح
‫جاهزًا لاستدعاء إضافة ممثل محلي تمرير الدوران في هذا الدوار f الآن للمعلمة الثانية ، قم بالمضي
‫قدمًا وتمريره صحيحًا لإدخال المسح B نظرًا لأننا نريد المسح عند التدوير ، وإيقاف الفيديو مؤقتًا وتناوب
‫تنفيذ الخزان الآن.
‫تمام.
‫لذلك سيكون هذا بسيطًا إلى حد ما.
‫نحن فقط بحاجة إلى متغير معدل الدوران.
‫الآن سأذهب إلى الخزان بسرعة أقل وأخلق معدل دوران تعويم.
‫الآن ربما تقوم بتهيئة هذا إلى بعض القيمة وهذا جيد.
‫إذا كان الأمر مختلفًا عما أختاره ، فسأختار 45 درجة فهرنهايت وأرى كيف يعمل ذلك.
‫لكننا سنعرض هذا للمخططات حتى نتمكن من تغييره أثناء تطويرنا.
‫الآن أود تعديله في أي مكان وسأقوم بإلصاقه في نفس فئة الحركة مثل السرعة.
‫لذلك سأقوم بسرقة هذه الممتلكات الخاصة بك ولصقها هنا أعلى الاتجاه لليمين حتى يتم وضعها
‫في أي مكان.
‫فئة الحركة الآن وخزان CP.
‫أنا مستعد لتعيين نعم لدوران دلتا.
‫لذلك سنقول تناوب دلتا.
‫نعم.
‫وسنقوم بضبطه على قيم مضروبة ، وأوقات معدل الدوران ، ووقت دلتا.
‫وبالطبع يمكننا الحصول على وقت دلتا مع احصائيات طريقة اللعب U ، والحصول على ثواني دلتا العالمية التي
‫تمر في هذا ككائن سياق العالم.
‫لذلك سأقوم بلصق ذلك هناك.
‫الآن أعلم أن الكود الكاذب الخاص بي لا يتطابق تمامًا.
‫إنه بالترتيب الخاطئ.
‫توقيت دلتا في المنتصف هنا.
‫لا يهم لأنه عند ضرب ثلاث قيم معًا ، يمكنك ضربها بأي ترتيب والحصول على
‫نفس النتيجة.
‫لذا في حالة ما إذا كنت تتساءل عن ذلك ، ستظل الرياضيات تظهر كما هي إذا ضربت هذه القيم
‫الثلاث بترتيب مختلف.
‫لذلك لا تقلق بشأن ذلك كثيرًا.
‫الآن لدينا دوران دلتا.
‫الشيء الوحيد المتبقي هو استدعاء دوران محلي لإضافة ممثل ، ونحن نمرر في Delta rotation وبالنسبة للإدخال
‫الثاني سنقوم بتمريره بشكل صحيح لتمكين المسح عند التدوير.
‫لذلك دعونا نجمع هذا.
‫حسنًا ، تم تجميعنا الآن.
‫قد تلاحظ في اثنين من مقاطع الفيديو التالية أن المتجه الصفري والصفر الدوار مفقودان من هذه السطور.
‫هذا لأنني بدأت بهذه التهيئة وأدركت لاحقًا أنه من المحتمل أن يتم
‫تهيئتها على الأقل بقيم صفرية.
‫لذلك لا تقلق إذا رأيت هذه الخطوط تبدو فيما بعد على هذا النحو عند التهيئة ، احتفظ بالمتجه الصفري والدوار
‫الصفري الخاص بك وسترى أنني التقطت هذا في فيديو في المستقبل القريب.
‫لذلك لا تقلق.
‫إذا كنت لا ترى هذه التهيئة ، فيجب أن تكون موجودة.
‫وقد عدنا إلى المحرر.
‫دعنا نضغط على play وسأستخدم مفتاح D وسنقوم بالتناوب ويقوم المفتاح A بتدويرني للخلف في الاتجاه الآخر ويمكننا
‫أيضًا التحرك للأمام والخلف.
‫والآن بعد أن أصبح بإمكاننا الدوران والمضي قدمًا ، لدينا القدرة على التحرك حول العالم.
‫هذا معلم عظيم.
‫أنا الآن أتحرك ببطء شديد ، لكن هذا جيد لأنني أستطيع تحديد خزانتي ويمكنني
‫البحث عن فئة الحركة وتغيير معدل الدوران إلى شيء أعلى مثل 90.
‫لذلك دعونا نمضي قدما ونضرب اللعب.
‫وهذا أسرع قليلاً.
‫الآن ، إذا كنت تعتقد أن هذا لا يزال بطيئًا بعض الشيء.
‫يمكنك بالطبع تعديلها.
‫لذا سأقوم باختيار - الخزان مرة أخرى.
‫وبدلاً من 400 ، نجعلها 800.
‫لما لا؟
‫بدلاً من 90 ، دعنا نقول 120.
‫الآن ، إذا ضغطت على تشغيل ، فأنا أسرع قليلاً.
‫إذن هذا يبدو جيدًا حقًا.
‫إذا نظرنا إلى الوراء في خطة القسم ، لدينا الآن خزان يمكنه التحرك في جميع أنحاء العالم.
‫تم تحديد النقطة الأولى بالتأكيد ونحن نتعامل مع حركة WASD.
‫نحن لا نتعامل مع إدخال الماوس حتى الآن ، لكننا سنصل إلى ذلك.
‫لكننا نقترب خطوة واحدة من إكمال هذه اللعبة.
‫باختصار ، تعلمنا ما هو الكنس وكيف يمكننا تمكينه حتى لا تمر كائناتنا من خلال بعضها
‫البعض.
‫أضفنا دورًا محليًا للممثل وقمنا بذلك بتطبيق معدل دوران يمكننا تعديله في التفاصيل.
‫لوحة في المحرر لجعل التطوير أسهل قليلاً.
‫عمل عظيم.
‫نحن الآن ننقل الخزان في جميع أنحاء العالم.
‫سأراك في الفيديو التالي.