برمجة الألعاب لالروبوت

برمجة الألعاب لالروبوت 19: كشف التصادم

42 فيديوهات

238 دقيقة

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

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

العرض والارتفاع للنسيج، وأنه هو الكمال بالنسبة لي أن أقول الممثل الخاص بي، 'مهلا، الحجم الجديد الخاص بك (مع setSize) هو pinchos.getRegionWidth () . لعرض المنطقة، وpinchos.getRegionHeight ()، للحصول على أعلى مستوى 'هكذا نحن نعرف كيف طويل القامة ActorPinchos: التي تقيس الملمس. مع ActorJugador هو نفسه. هذا ما كنت أعرف ذلك لأنني فعلت ذلك في أشرطة الفيديو الأولى: getWidth () وgetHeight ().

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

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

ما يهمنا هو كشف عندما حدث هذا: أي عندما اشتبكت المسامير مع الممثل. ويبدو أن هناك طريقة بسيطة لرؤية عندما ضربنا. وهنا لدينا هذا الخط العمودي، التي من شأنها أن تكون المقابلة لX موقف لاعب. عندما نقول setX () أنه تبين لنا هو المكان الذي تحصل عليه هذا الخط لأن أصل الإحداثي مبين على الجانب الأيسر. نحن نعرف ما هو واسع الفاعل،

ولذلك فمن السهل تحديد الحافة اليمنى مما يجعل مجموع X + WIDTH. وبالمثل، يمكن أن نحصل على الحافة اليسرى من أسياخ لدينا باستخدام X في حالة أسياخ. عند حدوث الاصطدام، والشيء المثير للاهتمام يحدث: تحدث الاصطدامات لأن الحافة اليسرى ActorPinchos لدينا ما هو أكثر من اليسار، أي X يستحق أقل، من قيمة X + العرض من المسامير. إذا أجرينا مقارنة بين pinchos.x

و(jugador.x + jugador.width)، ما يحدث هو أن هناك تصادم ولأن الأول هو أصغر من الثانية. إذا كان هذا الشرط صحيحا، هناك تصادم، لأن المسامير هي حرفيا داخل اللاعب. هذه هي الاستراتيجية الأولى للكشف عن التصادم. باستخدام طريقة تجعل قبل استدعاء التعادل () استدعاء أسلوب دعا comprobarColisiones () من شأنها أن تخلق الآن. هناك بعض التباين ضد

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

لذلك أولا أن تفعل التحديثات والضوابط وأخيرا عندما يكون كل شيء dibujadlo جاهزة. خصوصا مع Box2D، وهذا سيكون من المهم للغاية. آخر شيء سأقوم به هو كتابة comprobarColisiones () طريقة للتحقق ما قلته. إذا الحافة اليمنى من لاعب بلدي أكبر من الحافة اليسرى من المسامير بلدي، هو لأنه لم يكن هناك تصادم. الوقت المناسب لقتل لاعب، من حيث الأساس. لو أستطيع وضع شرطا

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

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

وليست هذه هي أفضل تكنولوجيا للتحقق الاصطدامات لكن مباريات 2D الأساسية هي. ومع ذلك، مع Box2D لدينا نظام أفضل لدمج المادية.

العثور على دورات جديدة، والاشتراك. لن يكون هناك غير المرغوبة، وعدت :)

عن المؤلف

foto de jotajotavm
José Javier Villena

السيرة الذاتية: محلل مبرمج في لغات مختلفة. منصات المعلم PREMIUM المعترف به عالميا باعتباره CodigoFacilito. مقالات رئيس التحرير Cristalab. ويرعى بلدي قناة يوتيوب من قبل الناشر ANAYA وLaTostadora. أود أن أشرح بالتفصيل وإعطاء أمثلة عديدة لتجنب الشك.