‫أهلا ومرحبا.
‫في هذه المحاضرة ، سننظر في كيفية ضبط منصتنا المتحركة باستخدام سرعة متجه في متغيرات
‫أعضائها.
‫وسننظر في كيفية جعل معدل إطار الحركة مستقلاً باستخدام شيء يسمى
‫وقت دلتا.
‫حسنًا ، دعنا نتعمق.
‫حتى هذه النقطة ، كنا نحدِّث مكونًا واحدًا من المتجه في وقت واحد.
‫الآن ، ماذا لو أخبرتك أنه لا يتعين علينا القيام بذلك بهذه الطريقة؟
‫ماذا لو تمكنا من تحديث المتجه بالكامل بمقدار معين دفعة واحدة؟
‫حسنًا ، يمكننا إضافة المتجهات إلى متجهات أخرى إذا رأينا ذلك في القسم السابق.
‫إذن ما يمكننا فعله هو الانتقال إلى منصاتنا المتحركة H وإنشاء شيء ما هو متجه سرعة المنصة
‫المتحركة لدينا والذي يخبرنا بالاتجاه والسرعة اللذين نريد أن نسير بهما.
‫لذا فإن الطريقة التي نقوم بها بذلك هي إنشاء خاصية U مألوفة إلى حد ما الآن وسنقوم بتعديلها
‫في أي مكان بحيث تكون مرئية في المفتش ومن ثم ستكون متجهًا من النوع F كما
‫فعلنا من قبل ، ونحن سوف نسميها سرعة المنصة ويمكننا أن نعطيها شيئًا ما في الوقت الحالي.
‫لذلك سنقوم بعمل مُنشئ متجه F ثم سنعطيه على سبيل المثال 100 في المكون X وصفر وصفر في المكونات
‫الأخرى ثم فاصلة منقوطة لإنهائه.
‫وأريد أن أريكم خدعة واحدة أخرى هنا وهي أنه إلى جانب التعديل ، في أي مكان يمكننا وضع
‫وسيطة أخرى مفصولة بفاصلة إلى شيء خاص بخاصية U ، والذي يبدو قليلاً كدالة.
‫في الواقع ، يمكنك وضع فئة تسمى الفئة بحرف C كبير ثم تضع علامة التساوي.
‫وعادة ما أترك مسافة بين فئة علامات التساوي هذه تساوي.
‫وبعد ذلك يمكنك إعطاء فئة تريد أن تظهر.
‫هنا يمكنك أن ترى أن هناك فئات لنسخ التحويل المتماثل.
‫هذه هي أنواع الفئات التي نعني أنني سأطلق عليها اسم النظام الأساسي المتحرك الخاص بي بحيث يكون لدينا
‫نوع من فئة النظام الأساسي المتحرك لوضع هذه المتغيرات فيه.
‫ولاحظ أنني أستخدم علامات اقتباس مزدوجة حول هذه الفئة.
‫هذا هو النحو الصحيح.
‫أنت بحاجة إلى تضمين هؤلاء.
‫وبعد ذلك ما يمكننا القيام به هو أنه يمكننا الاستفادة من متغير العضو الجديد هذا في C ++.
‫لذا بدلاً من تعيين المكون X للموقع الحالي ، دعني أزيل هذا السطر
‫تمامًا وأعد كتابته لأن الموقع الحالي يساوي الموقع الحالي بالإضافة إلى سرعة النظام الأساسي مثل.
‫لذا ضع فاصلة منقوطة في نهاية السطر ودعنا ننتقل إلى Unreal ونضغط على compile ونرى كيف تسير الأمور.
‫لذلك تم تجميعها بنجاح.
‫ويمكنك أن ترى الآن أن لدي قسم المنصة المتحركة هذا على منصتي المتحركة بسرعة
‫منصة ومكونها x مضبوط على 100.
‫ماذا يحدث إذا ذهبت وضغطت اللعب؟
‫حسنًا ، تتسارع المنصة بسرعة في المسافة لأنني أقوم بإضافة 100 وحدة لكل إطار.
‫هذا كثير.
‫لكني أريده أن يتحرك بسرعة حوالي 100 سم في الثانية.
‫هذا فقط متر واحد في الثانية.
‫إنه ليس سريعًا جدًا.
‫فلماذا تسير بهذه السرعة؟
‫حسنًا ، بسبب معدل عرض الإطارات.
‫حسنًا ، إذا كنت على نظام أبطأ ، فسيكون التحرك أبطأ.
‫وإذا كنت على نظام أسرع ، فسوف يتحرك بشكل أسرع.
‫لا يبدو أن هذا منطقي.
‫لذلك دعونا نتحدث عن استخدام دلتا تايم.
‫ما هو وقت دلتا؟
‫حسنًا ، يمكن أن يخبرنا استخدام Delta time في Unreal عن المدة التي استغرقها كل إطار في التنفيذ.
‫أين وقت الدلتا؟
‫حسنًا ، إذا انتقلت إلى كود Visual Studio ، يمكنك أن ترى أن Delta time متغير مذكور هنا في الجزء العلوي
‫من العلامة.
‫هذا هو في الواقع معلمة إدخال.
‫إنها مدخلات الدالة.
‫لذا يمكننا استخدامه هنا بشكل أساسي كما نستخدم متغيرًا محليًا ، يمكننا استخدامه داخل
‫جسم دالة التجزئة.
‫لذلك فهو يخبرنا بالوقت الذي استغرقه تنفيذ الإطار.
‫لكن لماذا هذا مهم؟
‫لأنه عندما نضاعف شيئًا ما في وقت دلتا ، فهذا يجعل معدل إطار لعبتنا مستقلاً بشكل أساسي ، مما يعني أساسًا
‫أن اللعبة تتصرف بنفس الطريقة على جهاز كمبيوتر سريع أو بطيء.
‫لذلك دعونا نلقي نظرة على مثال توضيحي إذا كنت أرغب في نقل شيء ما بمقدار وحدة واحدة إلى اليسار
‫في كل ثانية.
‫وإليك كيف ستبدو على الأجهزة المختلفة.
‫لدي جهاز كمبيوتر بطيء.
‫يمكنه فقط عمل عشرة إطارات في الثانية وجهاز كمبيوتر سريع يمكنه عمل 100 إطار في الثانية.
‫الآن مدة تلك الإطارات مختلفة.
‫لذلك على الكمبيوتر البطيء ، مدة الإطار هي 0. 1 من الثانية.
‫إذا كان بإمكاني إدخال عشرة منهم فقط في الثانية وعلى جهاز كمبيوتر سريع فسيكون 0. 01 من الثانية ، أقل من ذلك بكثير لأنه يمكنه
‫تنفيذ الأشياء بشكل أسرع.
‫لا يستغرق الأمر وقتًا طويلاً لحساب إطار.
‫لذا ، إذا قمت بضربها في مدة الإطار ، أضرب الوحدة الخاصة بي في مدة الإطار.
‫ثم سترى ذلك في 1/2.
‫لذلك ، حيث تم تنفيذ عشرة إطارات ، أحصل على وحدة حركة واحدة.
‫وينطبق الشيء نفسه.
‫إذا قمت بتنفيذ 100 إطار ، ما زلت أحصل على وحدة حركة واحدة.
‫لذلك أود أن أتحداك أن تضرب في وقت دلتا.
‫ما سنفعله هو أن نتذكر أنه يمكننا ضرب المتجهات في قيمة النقطة العائمة
‫لقياس مقدارها.
‫والطريقة التي يمكننا بها القيام بذلك في C ++ هي استخدام عامل التشغيل star.
‫هذه هي طريقة الضرب.
‫لا يوجد عامل تشغيل إشارة الضرب.
‫قد يتم الخلط بينه وبين X ، لذلك نستخدم عامل التشغيل النجمي للإشارة إلى الضرب
‫، وأود منك تجميع واختبار نتائجك.
‫لذا اضرب في زمن دلتا ، واضرب السرعة في زمن دلتا وانظر ماذا سيحدث ، بالإضافة إلى الفيديو وانطلق.
‫تمام.
‫مرحبًا بعودتك.
‫إذن فهي سرعة المنصة التي نريد ضربها هنا.
‫يمكننا الآن إخراج هذا إلى متغير منفصل ، لكن في الواقع ، يمكننا فقط وضع
‫مضروب في زمن دلتا في نهاية هذا السطر ، قبل الفاصلة المنقوطة بوضوح ، لأنه يقع قبل نهاية العبارة.
‫والمثير هنا هو أن هناك القليل من أسبقية العوامل التي تحدث
‫هنا حيث أن الضرب بين سرعة النظام الأساسي ووقت دلتا سيحدث قبل الإضافة إلى
‫الموقع الحالي.
‫الآن هذا يتبع القواعد الرياضية العادية للحصول على قائمة كاملة بهذه القواعد.
‫لن أخوض في تفاصيلها هنا ، لكن يمكنك إلقاء نظرة على الصفحة حسب ترتيب العمليات
‫على ويكيبيديا.
‫هناك الكثير من القواعد المختلفة بلغات مختلفة ، سواء كانت كتلة الجسم ، أو كتلة المزايدة ، أو كتلة البدانة ، أو
‫كتلة السرير.
‫هناك الكثير من الاختصارات المختلفة.
‫لذا ، أيًا كان الشخص الذي نشأت على استخدامه ، فهذا هو الذي أوصي باستخدامه.
‫بالنسبة لي ، كانت كتلة الجسم ، لكنها مختلفة في أماكن أخرى.
‫لذا من الجدير بالذكر أنه يمكننا كتابته على هذا النحو ، ولكن إذا أردنا أن نتأكد من حدوث شيء ما بترتيب
‫مختلف عن ذلك ، فيمكنك استخدام الأقواس للإشارة إلى هذا.
‫لذا يمكنني ، فقط لتوضيح الأمور ، سأضع أقواسًا حول عملية الضرب هذه فقط لأوضح
‫لكم أن هذا ما يحدث.
‫الضرب أولاً ثم الإضافة إلى الموقع الحالي.
‫لذا دعنا ننتقل إلى Unreal ونختبر ذلك.
‫سنقوم بالضرب والتجميع وعندما يتم ذلك ، فلنبدأ اللعب.
‫والآن نرى المنصات تتحرك بسرعة أكبر بكثير لأنها تتحرك في الواقع بمعدل
‫متر واحد في الثانية ، وهو أمر جيد لمنصة متحركة.
‫لذا يمكنك أن ترى أن هذا قد ساعدنا على تقليل السرعة ، ولكن أيضًا الآن هذا معدل إطارات ، سرعة
‫مستقلة.
‫إذا كان جهاز الكمبيوتر الخاص بي يتأرجح لأن شيئًا آخر يحدث في الخلفية ، فسيظل
‫هذا يبدو كما هو ويلعب نفس الشيء في اللعبة.
‫أشياء عظيمة.
‫سأراك في المحاضرة القادمة.