سؤال

وأنا جديدة جدا لخلق مباريات (والعمل في OpenGL بشكل عام). أنا أحاول أن جعل لعبة 2D لكن يأتي على نقطة عثرة عند محاولة الحصول على رأسي حول الكشف عن التصادم.

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

هل هناك طريقة لحساب "المطلقة" إحداثيات من المصفوفة الحالية؟

يرجى شرح ببساطة ممكن! شكر:)

هل كانت مفيدة؟

المحلول

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

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

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

نصائح أخرى

فمن الأفضل أن مجرد تتبع كل الأشياء موضع مطلق.

ومحبط، أليس كذلك؟ كل برنامج OpenGL والرسومات البرمجة للمبتدئين لديك أسئلة مماثلة ليدكم. يمكن تتبع الأطر المختلفة للإشارة أن يكون صعبا.

وأول شيء أود أن أوصي هو الحصول على نسخة من برنامج OpenGL SuperBible من الأمازون أو تاجر التجزئة آخر. ويبدأ في بداية مطلقة، ويبني تدريجيا من هناك. الملصق الذي أوصى في وقت سابق موقع NeHe هو إعطاء نصيحة جيدة للغاية.

وأما عن سؤالك نفسه، عند إنشاء برنامج برنامج OpenGL يمكنك تعيين "modelview" مصفوفة لتكون هوية (انظر SuperBible لمزيد من المعلومات) وجميع تنسق تقوم بتعيينها في glPoint () يدعو سيتم تحديد نسبة إلى أن مصفوفة كإطار مرجعي. إذا كنت لا تفعل أي شيء إلى جانب glPoint دعوة () من هنا فصاعدا كل الأشياء الخاصة بك وسوف يكون في نفسه، نظام الإحداثيات المطلقة.

فإنه يحصل صعبة عند بدء الدعوة glTranslate وglRotate وglLoadMatrix، وتلك الوظائف تحويل الإطار المرجعي. وعندما يحدث ذلك كافة المكالمات اللاحقة glPoint () ثم يتم النسبية لهذا الإطار الجديد للإشارة.

و(كما ذكر ملصق آخر، إذا كنت ترغب في العودة إلى الإطار السابق المرجعية لديك لانقاذ المصفوفة modelview على كومة قبل تحويله، ثم يمكنك "البوب" مكدس ونعود إلى حيث كنت من قبل.)

ومن الصعب وصف هذا على موقع الدعم، ولكن أعتقد أنها سلسلة من الأسلحة الميكانيكية في كرسي الأسنان. ويمكن تحريك علبة لتكون تحت ذقنك، ثم تناوب عليها في زاوية لكأس ذقنك. ويمكن اعتبار كل حركة مستقلة من حيث التحول، نفذت في OpenGL في شكل مصفوفة.

وكما قلت، فإنه من الصعب أن يصف هذا صحيح على الانترنت. الاستيلاء على كتاب SuperBible وانها سوف تجعل الكثير من معانيها. حظا سعيدا!

وعندما علمت برنامج OpenGL، واستخدام الموارد 2 التالية على كل شيء.

ويبدو أن gametutorials وقد ذهب المدفوع ل وبيع CD، لكنها كانت مكتوبة بشكل جيد لذلك قد يكون من المفيد شرائها.

ولكن، NeHe لا تزال دروس مجانية على شبكة الإنترنت، بما في ذلك هذا واحد للكشف عن الاصطدام .

http://www.gamedev.net/reference/list.asp ؟ معرف_الفئة = 31

وماذا تقصد ب "المطلقة"؟

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

وبدلا من ذلك يمكنك استخدام التحويل لديك بالفعل لاتخاذ نقطة القديمة إلى النظام الجديد تنسيق.

وتتبع المواقف الكائن في ينسق العالم، ومقارنتها مباشرة.

لقيام العرض، استخدم نموذج الكاميرا، وتطبيق كل ما تبذلونه من التحولات لذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top