‫أهلا ومرحبا بكم مرة أخرى.
‫الآن في هذا الفيديو ، سنبدأ الحديث عن كيفية تحريك خزان الوقود.
‫لذا لتحريك الخزان ، سيتعين علينا إضافة نوع من الإزاحة ومحرك غير حقيقي.
‫عندما يتعلق الأمر بإضافة تعويض ، نحتاج إلى اتخاذ قرار بشأن إجراء الإزاحة في الفضاء المحلي
‫مقابل الفضاء العالمي.
‫لذلك دعونا نناقش الفرق بين هذين الأمرين.
‫الآن ، هنا في المحرر ، لقد تم تحديد - الخزان ، وبمجرد تحديد هذا
‫، ستلاحظ وجود أداة.
‫هذا ما يسمى هذا الشيء ، أداة.
‫له ثلاثة أسهم ولكل منها لون مختلف.
‫الآن ، إذا لم تكن قد لاحظت ، في الجزء السفلي الأيسر من الشاشة توجد أداة أخرى أصغر.
‫وهذا النوع يشبه أداة الممثل الذي نختاره.
‫لذلك إذا اخترت أي ممثل ، فسنحصل دائمًا على هذه الأداة.
‫وبالطبع ، تتغير الأداة عندما ننتقل من وضع الترجمة إلى وضع التدوير إلى وضع القياس.
‫طالما أننا قيد الترجمة ، والذي يمكننا الوصول إليه من هذا الرمز الموجود في أقصى اليسار أعلى
‫يمين منفذ العرض أو باستخدام مفتاح W ، فلدينا القدرة على نقل الأشياء أو ترجمتها عن طريق سحب أحد الأسهم الموجودة
‫على أداة.
‫وتتوافق الألوان مع المحاور باللون الأحمر حيث يمثل المحور x الأخضر المحور y والأزرق يمثل المحور z.
‫الآن ، إذا قمنا بتدوير وجهة نظرنا ونظرنا في اتجاه مختلف ، فسنرى أن هذه الأداة لا تزال
‫تشير إلى نفس الاتجاه الأصلي.
‫وأثناء دوراننا ، تدور الأداة الموجودة أسفل يسار منفذ العرض لأن اتجاه
‫العالم لا يتغير.
‫حتى الان جيدة جدا.
‫الآن ما ننظر إليه هو اتجاهات الفضاء العالمية ، ولكن لكل ممثل في العالم ، هناك اتجاه
‫محلي.
‫ويمكننا أن نرى أنه من خلال النقر على هذه الأيقونة التي تشبه العالم والنافذة المنبثقة تقول
‫دورات ، فإن أداة التحويل تنسق الأنظمة بين العالم والفضاء المحلي.
‫عندما نرى عالماً هنا ، هذا يعني أننا ننظر إلى الفضاء العالمي ، ولكن إذا نقرنا
‫عليه ، فإنه يتحول الآن إلى مكعب ، ونحن الآن ننظر إلى الفضاء المحلي للممثل المحدد الذي اخترناه.
‫لا تزال الأداة الموجودة أسفل يسار منفذ العرض تُظهر لنا مساحة العالم.
‫لكن إذا أخذت هذا الممثل وقمت بالتبديل إلى وضع التدوير وقمت بتدويره ، فعندما أعود
‫إلى وضع الترجمة ، سترى أن الأداة تشير الآن في اتجاه مختلف.
‫الفاعل نفسه له محور س المحلي الخاص به.
‫يمكننا التفكير في المحور x للممثل باعتباره متجهًا أماميًا.
‫لاحظ الآن أنه في الجزء السفلي الأيسر من الشاشة ، لا تزال الأداة تشير في نفس الاتجاه.
‫لكن هذا الممثل هنا ، دبابة البيدق ، لها اتجاه X المحلي الخاص بها وهي تشير إلى اتجاه
‫مختلف.
‫الآن ، إذا نقرت على المكعب هنا وأعدته إلى عالم الآن ، فإن أداة الدبابة مطابقة
‫ومحاذاة مع اتجاه محور العالم حتى نتمكن من التبديل بين الفضاء العالمي والمحلي لأي ممثل
‫ليرى مكانه المحلي اتجاهه مقابل اتجاهه العالمي.
‫لذلك رأينا أنه بالنسبة لأي ممثل نختاره في عالمنا ، فإن له اتجاهه المحلي الخاص به.
‫وهذا قد يكون أو لا يكون مختلفًا عن اتجاه العالم كما هو موضح في هذه الصورة هنا.
‫لذلك هذا مهم للغاية عندما يتعلق الأمر بتحريك الأجسام في Unreal Engine.
‫هناك وظائف للأشياء المتحركة وهناك مجموعة مختلفة من الوظائف للتحرك في الفضاء العالمي
‫مقابل الفضاء المحلي.
‫لنفترض أن الخزان يواجه هذا الاتجاه ومحوره x يشير قليلاً إلى اليسار ، كما يتضح من
‫السهم الذي رسمته هنا على الخزان.
‫الآن يمكننا أن نرى ، بناءً على هذه الأداة الموجودة أسفل اليسار ، أن اتجاه المحور x العالمي يشير
‫إلى اليمين.
‫لذا فإن الخزان لا يتماشى مع اتجاه الفضاء العالمي.
‫الآن ، لنفترض أنه كان علينا تحريك هذا الخزان في الفضاء العالمي في اتجاه X الموجب.
‫ثم على الرغم من أن الخزان يشير إلى اليسار ، فإنه لا يزال يتحرك في اتجاه العالم x هذا
‫وسيبدو وكأنه يتحرك للخلف.
‫إذن هذا ليس ما نريده.
‫الآن ، من ناحية أخرى ، لنفترض أننا نستخدم وظيفة مصممة لتحريك الخزان في مساحته المحلية.
‫هذا يعني أنه إذا قمنا بتحريك الخزان في اتجاه X المحلي الخاص به ، فسوف يتحرك للأمام في الاتجاه
‫الذي تتوقعه.
‫وهذا هو السلوك الذي نريده.
‫الآن في Unreal Engine.
‫الوظيفة التي يمكنها القيام بذلك لنا تسمى Add Actor Local Offset.
‫هذه الوظيفة تحرك الممثل في اتجاه محلي.
‫الآن يطبق الإزاحة ، وهي حركة واحدة.
‫بشكل أساسي ، نخبرها عن الاتجاه الذي يجب أن تتحرك فيه وإلى أي مدى ، وتحرك هذا الكائن مرة واحدة
‫، مما يعني أننا سنطلق على هذه الوظيفة كل إطار نريد تحريك الخزان.
‫لذلك سنقوم بنقلها بزيادات صغيرة منذ استدعاء دالة في كل إطار.
‫يعني أننا نسميها كثيرًا الآن بالنسبة لخزاننا ، فإن المحور السيني المحلي الخاص به هو اتجاهه الأمامي.
‫إذن هذا هو المحور الذي سنستخدمه عندما نضيف تعويضًا محليًا.
‫الآن ها هي وثائق المحرك غير الواقعية للإزاحة المحلية للممثل الإضافي.
‫ترى أنها وظيفة تنتمي إلى فئة الممثلين.
‫لهذا السبب يطلق عليه الآن إضافة ممثل محلي تعويض لأنه موجود في فئة الممثلين.
‫سترث البيادق هذه الوظيفة حتى نتمكن من استخدامها.
‫الآن ها هو بناء الجملة.
‫لديها أربعة معلمات إدخال.
‫الأول هو متجه F يسمى موقع دلتا.
‫لذلك سنحتاج إلى إنشاء متجه F يمكننا تمريره إلى وظيفة الإزاحة المحلية المضافة للممثل.
‫لذلك نحن نعرف عن هذا الإزاحة المحلية الفاعل المضافة.
‫وأود أن أجرب هذا فقط لأرى كيف يعمل حتى نتمكن من القيام بذلك في دالة التجزئة.
‫الآن لا نقوم بالكتابة فوق دالة التشنج اللاإرادي هنا في فئة الخزان ، ولكن لدينا في فئة القاعدة
‫بونج.
‫إذا ذهبنا إلى البركة الأساسية CP هنا لدينا وظيفة التشنجات اللاإرادية ولا نقوم بأي شيء هنا
‫وهذا مثالي لإجراء بعض التجارب.
‫لذا ما سأفعله هو الكتابة ، والإضافة ، والممثل ، والإزاحة المحلية تمامًا مثل ذلك.
‫وأنا ذاهب إلى النقر بزر الماوس الأيمن واختيار الانتقال إلى التعريف.
‫الآن هنا في ملف الممثل CP ، لدينا تعريف ADD Actor Local Offset.
‫لاحظ الآن شيئًا مثيرًا للاهتمام.
‫إنه يتحقق مما إذا كان مكون الجذر ليس فارغًا وإذا لم يكن فارغًا ، فإنه يستدعي هذه الوظيفة إضافة تعويض
‫محلي.
‫إذن ما نفعله حقًا هو إضافة تعويض لمكوِّن الجذر.
‫ونظرًا لأن جميع المكونات الأخرى متصلة بمكون الجذر ، فسوف تتحرك معها.
‫لذا من المهم ملاحظة أنه عندما نضيف تعويضًا محليًا ، فإننا ننقل مكون الجذر
‫وكل شيء آخر يتحرك معه.
‫الآن ، إذا قمنا بالتمرير فوق إضافة الإزاحة المحلية ، فسنرى أن جميع معلمات الإدخال الأربعة مدرجة
‫هنا.
‫وبصرف النظر عن الأول ، وهو متجه F ، فإن الآخرين لديهم قيم افتراضية.
‫لاحظ عملية المسح المنطقي B التي تقول إنها تساوي خطأ.
‫تحتوي معلمات الإدخال الثالثة والرابعة أيضًا على هذه القيم الافتراضية.
‫هذا يعني أنه إذا استدعينا هذه الوظيفة ولم نمرر المدخلات الخاصة بمعلمات الإدخال الثلاثة الأخيرة ، فسيتم
‫تعيينها على هذه القيم افتراضيًا.
‫الآن سأقوم بإغلاق الممثل CP وهنا في وظيفة علامة البركة الأساسية أود أن أستدعي إضافة ممثل
‫محلي إزاحة كل إطار فقط لأرى كيف يعمل.
‫نحن نعلم الآن أن معلمة الإدخال الأولى هي متجه F.
‫إنه يسمى موقع دلتا.
‫هذا هو مقدار الحركة التي نود إضافتها في كل مرة نسمي هذه الوظيفة.
‫لذلك سأقوم بإنشاء متجه F يسمى موقع دلتا.
‫لذا F موقع دلتا المتجه.
‫الآن أرغب في التخلص من هذا المتجه.
‫بمعنى آخر ، تأكد من تهيئته بكل الأصفار.
‫الآن أريد متجهًا صفريًا يمكنني تمريره في صفر f و x و y و z نحصل جميعًا على صفر f.
‫لذلك هذا سوف يخدم أغراضي على ما يرام.
‫الآن سآخذ Delta Location X وسأغير ذلك إلى نقطتين F.
‫بهذه الطريقة لدينا متجه مع Y و Z مضبوطان على صفر ، x مضبوط على اثنين.
‫لذلك سأقوم بتمرير موقع دلتا إلى إضافة عامل تعويض محلي كنوع من التجربة.
‫يمكنني الآن الابتعاد عن استدعاء الإزاحة المحلية للممثل الإضافي وتمرير معلمة الإدخال الأولى
‫لأن الثلاثة الأخرى اختيارية.
‫لذا سأقوم بتجميع هذا ومعرفة ما سيحدث.
‫الآن إذا مضينا قدمًا وضربنا تشغيل ، لاحظ ، بضعة أشياء.
‫بادئ ذي بدء ، انظروا ، البرج يتحرك أيضًا.
‫هذا لأننا وضعنا هذا في دالة التجزئة للبيدق الأساسي وكلتا السندات ترث من البيدق الأساسي.
‫لذلك في الواقع ، كانت كل هذه البرك تتحرك.
‫والمثير للاهتمام أنهم جميعًا يتحركون في اتجاهات محور س الخاصة بهم.
‫يمكننا أن نرى كل شيء يتحرك مرة واحدة من وجهة النظر هذه.
‫إذا نقرنا على القائمة المنسدلة بجوار اللعب واخترنا محاكاة ، فهذا يسمح لنا بلعب اللعبة دون
‫امتلاك أي برك.
‫لذلك إذا قمت بالنقر فوق Simulate ، فتحقق من ذلك.
‫تتحرك كل بركة في اتجاه المحور س الخاص بها.
‫هذا في الواقع غريب جدا ورائع جدا.
‫هذا يوضح لنا كيف يعمل ممثل الإعلانات المحلية تعويض.
‫إنه يحرك الأشياء في اتجاهاتهم المحلية.
‫الآن يمكننا الخروج من وضع المحاكاة من خلال النقر على القائمة المنسدلة واختيار منفذ العرض
‫المحدد وسيسمح لنا ذلك باللعب في وضع التشغيل العادي.
‫حسنًا ، سأوقف هذا ويمكننا العودة إلى القاعدة - ويمكننا إزالة هذا الرمز التجريبي.
‫سوف أمضي قدمًا وسأحذفه من وظيفة التجزئة حتى نعرف الآن كيف تعمل إضافة الإزاحة
‫المحلية للممثل.
‫لنعد إلى Tank CP وهنا لدينا وظيفة MOVE.
‫نعلم أن هذه الوظيفة تسمى كل إطار فردي ونعلم أن القيمة تساوي واحدًا.
‫إذا ضغطنا على مفتاح W وكان سالب واحد ، إذا ضغطنا على المفتاح وكان صفرًا إذا كنا نضغط
‫على كليهما أو لا.
‫لذلك بالنسبة للتحدي الخاص بك ، ستنقل الخزان باستخدام تعويض محلي إضافي.
‫لذلك في وظيفة MOV ، ستنشئ متجهًا F يسمى موقع دلتا.
‫تأكد الآن من التخلص من X و Y و z.
‫يمكنك القيام بذلك بأي عدد من الطرق ، مثل استخدام أحد منشئات المتجهات f المتنوعة.
‫الآن بمجرد الانتهاء من وضع الصفر لجميع المكونات ، قم بتعيين x الخاص به على قيمة القيمة التي تعويم معلمة
‫الإدخال في وظيفة MOV.
‫بمجرد القيام بذلك ، امض قدمًا وقم باستدعاء إضافة ممثل محلي يعوض في موقع دلتا.
‫أوقف الفيديو مؤقتًا وافعل هذا الآن.
‫تمام.
‫لذا عدت إلى هنا في ملف Tank CP.
‫الآن ، لم أعد بحاجة إلى سجل EWI هذا ، لذا سأقوم بإخراج ذلك وسأقوم بإنشاء
‫متجه F يسمى موقع دلتا.
‫الآن يمكنني استخدام أحد منشئي المتجهات F.
‫لقد أوضحت لك بالفعل كيفية إنشاء متجه جديد بجميع الأصفار.
‫سأريكم طريقة أخرى ، وهي تهيئة هذا باستخدام متجه f ، متجه صفري.
‫وهذا بالضبط ما يبدو عليه ، متجه بصفر لكل مكون.
‫هذا فقط لتظهر لك طريقة بديلة.
‫إذن لدينا متجه صفري.
‫الآن سآخذ موقع دلتا X وأضبطه على القيمة.
‫وأخيرًا يمكنني استدعاء إضافة ممثل محلي يمر في موقع دلتا.
‫لذلك دعونا نجمع هذا ونعيده هنا في المحرر ، سآخذ خزانتي وسأقوم فقط بتوجيهها
‫بحيث تواجه اتجاه العالم X وبعد ذلك يمكنني الضغط على التشغيل والنقر الآن في منفذ العرض.
‫إذا ضغطت على مفتاح W ، فأنا أتقدم للأمام وإذا ضغطت على المفتاح ، فسأعود.
‫إذا ضغطت على كليهما ، فسيتم إلغاء بعضهما البعض ولن أتحرك على الإطلاق.
‫وبالطبع ، إذا لم أضغط على أي شيء ، فلن أتحرك أيضًا.
‫إذن لدينا الآن حركة لدباباتنا ، لكنها بطيئة بعض الشيء ، لذا سيتعين علينا إجراء بعض التعديلات.
‫وسنتحدث أيضًا عن ضبط ميكانيكي الحركة هذا بدباباتنا.
‫باختصار ، تعلمنا عن ADD Actor والإزاحة المحلية والفرق بين الفضاء العالمي والفضاء
‫المحلي.
‫في الفيديو التالي ، سنستمر في إتقان ميكانيكي الحركة هذا بدباباتنا.
‫سأراك قريبا.