مشروع تدريبي في غودوت بونغ (الجزء الثاني): إنشاء الكرة

أحييك يا خبروفيت! في هذا الجزء ، سأقوم بإنشاء الكرة وتخصيصها للعبة Pong. إذا فاتتك البداية ، فهي هنا . مستوى المادة لا يزال مبتدئا.


تحت الخفض ، لا يزال هناك العديد من لقطات الشاشة.

استدعاء الأطفال ومرحبا بكم تحت القط.


للتحرير ، يتم فتح المشروع عن طريق النقر المزدوج على اسم المشروع أو عن طريق زر "تحرير".



عند إعادة تشغيل المحرك ، لم يتم فتح المشهد الذي تم إنشاؤه مسبقًا. يمكنك فتحه بالنقر فوقه في لوحة "نظام الملفات" ، وتسمى اللوحة التمثيلية في الوحدة مشروع.


يمكنك الآن إنشاء الكرة والترتيب الصحيح لهذا المحرك والجسم المادي وورثتيه: المصادم والرسومات. لكنني سأفعل ذلك بترتيب مختلف ، وفي نفس الوقت سأخبرك عن سبب الحاجة إلى ترتيب العقد هذا.


أول شيء أريد أن أفعله بالكرة هو رؤيته. لذلك ، سأبدأ مع الرسومات. يمكنني رسم مربع أبيض 3 × 3 بكسل في أي محرر صور. ومع ذلك ، لا أحب أن أفعل في برنامج تابع لجهة خارجية ، ما يمكنني فعله في المحرك.


لإضافة عقدة إلى المشهد ، انقر فوق علامة الجمع في لوحة المشهد. (بالطبع ، من الممكن استخدام قائمة السياق أو المفاتيح الساخنة)



تظهر قائمة ضخمة من أنواع العقد المختلفة في النافذة المفتوحة. يجب أن يتم عرضها جميعًا ، أو القراءة المثالية لكل عقد من العقد في الوثائق ، أو على الأقل عرض جميع العقد مباشرة في القائمة من خلال قراءة وصف كل منها.


سيساعد هذا في فهم العقد الموجودة في المحرك بشكل أفضل وما يجب فعله معها. ولهدفنا الحالي ، فإن عقدة Polygon2D مناسبة.



افتراضيًا ، يتم إنشاء جميع العقد كأطفال بالنسبة لعقدة الجذر ، وإذا كنت بحاجة إلى إنشاء عقدة تابعة لعقدة معينة ، فيجب عليك إنشاؤها عن طريق تحديد العقدة الأصل أولاً. من الواضح أن هذا ليس ضروريًا مع عقدة الجذر.


حان الوقت للانتباه إلى الجانب الأيمن من النافذة ، هناك لوحة مفتش.



لأصغرها

المربع هو شكل هندسي يتكون من 4 زوايا و 4 جوانب ، مع كل الجوانب متساوية مع بعضها البعض.


يحدد حجم المضلع عدد الزوايا ، وبعد ذلك تظهر قائمة بالنقاط ، وينبغي إدخال إحداثياتها ، وأنا شخصياً أفضل أن أبدأ من الزاوية اليسرى العليا وأن أتحرك في اتجاه عقارب الساعة حول النقاط. تحديد شخصية حول المركز. بشكل افتراضي ، في Godot ، يكون مركز كل العقد هو الركن الأيسر العلوي للمشهد. ويسمح إدخال الكسور بكسل.



يمكنك الآن إعداد "تحويل" ووضع الكرة في وسط المشهد.
لرؤية ذلك أفضل ، تحتاج إلى زيادة طفيفة في مشهد اللعبة في الجزء الرئيسي من النافذة.
يتيح لك التمرير في scroller على الماوس تكبير المشهد وتقليله ، والنقر فوق scroller وتحريك الماوس يحرك المشهد.



أنت الآن بحاجة إلى تحريك الكرة ، وهناك طريقتان رئيسيتان:


  1. يمكنك تغيير إعداد "Transform" ، ونقل الكرة بنفس الطريقة التي نقلتها بها إلى مركز المرحلة ، ولكن باستخدام رمز البرنامج ، وعلى نحو سلس.
  2. ويمكنك أن تضيف إلى هذا الرسم البياني عقدة لعنصر مادي تسمى "صلب" أو "كائن مادي". وانقل تأثير المحرك المادي على هذا الكائن.

يتيح لك المحرك الفعلي استخدام أكثر الحركات دقة ودقة وسلسة دون الحاجة إلى وصف جميع الحسابات المعقدة بنفسك.


بالإضافة إلى ذلك ، بالإضافة إلى حركة الكرة ، ما زلنا بحاجة لتحديد ما إذا كانت الكرة قد صادفت حدود الشاشة؟ إذا واجهت ، أي الحدود؟ هل اصطدمت الكرة بمضرب؟ إذا واجهت أي من المضارب وأي جزء؟ لكن هذه الأشياء هي أسهل للتحقق باستخدام محرك المادية.


بشكل عام ، هناك مخطط بسيط للغاية لهذا الاختيار. إذا تحركت جميع الكائنات في اللعبة على طول الشبكة وكان هناك قائمة انتظار للحركة. على سبيل المثال ، في لعبة الشطرنج ، لا يبدأ اللاعب الأسود دوره قبل أن يكمل اللاعب الأبيض حركته. وليس لأي من اللاعبين الحق في نقل عدة قطع في وقت واحد.


في مثل هذه الألعاب ، من المناسب تغيير إعدادات "التحويل" مباشرةً.
لجميع الحالات الأخرى ، هناك محرك الفيزياء.


الآن ، أعتقد أنه من الواضح أن استخدام محرك الفيزياء في لعبة Pong أكثر ملاءمة.


للقيام بذلك ، تحتاج إلى الكرة ، والآن هذه هي العقدة "Polygon2D" إضافة العقدة "PhysicsBody2D"



ولكن هناك ثلاثة مثل هذه العقد: Kinematic، Rigid and Static. حسب الوصف:


  1. Kinematic عبارة عن كائن مادي يتحرك وفقًا لكود البرنامج المكتوب ، ولا يطيع المحرك الفعلي. (خيارنا)
  2. جامدة هي كائن مادي يخضع بالكامل للمحرك الفعلي.
  3. ثابت هو كائن مادي بلا حراك.

تتوفر نظائر هذه العقد في جميع محركات الألعاب التي أعرفها ، وفي الوحدة لديهم نفس الأسماء والخصائص.


بعد إضافة العقدة "KinematicBody2D" ، يظهر إشعار خطأ.



عند تحريك المؤشر فوقه ، يصبح من الواضح أن سبب الخطأ هو عدم وجود قناع مصادم لهذه العقدة ، وفي هذه الحالة ، عرضت علي خيار واحد من خيارين: CollisionShape2D أو CollisionPoligon2D.


لقد حاولت بالفعل إنشاء مضلع ، والآن أريد إلقاء نظرة على النموذج. التي عند إنشاء تقارير خطأ آخر. تقول هذه المرة أن القناع يبدو أنه موجود ، لكن لم يخلق أحد شكل القناع.


يتم إنشاؤه في لوحة "المفتش". بالنسبة لمربعنا ، يكون شكل "RectangleShape2D" مناسبًا للإعدادات التالية.



الآن يمكنك البدء في تحريك الكرة حول الشاشة ، لكن مع المحرك الفعلي ، يمكنك فقط تحريك "الجسم المادي" مع جميع الورثة ، وسوف يتحرك بالنسبة إلى الأصل. في هذه الحالة ، سينتقل الجسم إلى جانب المصادم بالنسبة إلى المربع المرسوم على المسرح ، والذي سيبقى ثابتًا على الشاشة. الإصلاح بسيط للغاية:


  • لكي يتحرك الجسد المادي نسبةً إلى مكان الحادث ، يجب أن يكون عقدة تابعة للمشهد.


  • لكي تتحرك المربع المرسوم مع الجسم المادي ، يجب جعله طفلًا فيما يتعلق بالجسم المادي.


الآن بنقل الجسم المادي ، سأحرك قناع التصادم مع المربع المرسوم.


الكرة جاهزة للتحرك ، في المرة القادمة سنطلقها في النهاية ونرى كيف ستبدو في اللعبة.


سأكون سعيدًا بانتقادك في التعليقات.

Source: https://habr.com/ru/post/ar466491/


All Articles