Xna الحركة من المتوسط
أنا أحاول أن تجعل مستوى التمرير لعبة اختبار أفعل كممارسة التعلم. لقد قمت بإنشاء خريطة تحتوي على الكثير من البلاط التي يتم رسمها وفقا لموقفها في صفيف. أريد أساسا الكاميرا للتمرير إلى أسفل المستوى، ولكن في هذه اللحظة أنها مجرد يهز بشكل محموم صعودا وهبوطا قليلا. لدي فئة الكاميرا التي هي مجرد فئة ثابتة فارغة تحتوي على vector2 ثابت لموقع الكاميرا. يتم تعيين فقط كما 50، 50 وجميع البلاط هي 50 بنسبة 50. ثم في بلدي خرائط طريقة التحديث لدي ما يلي: و 300 و 18 هي العدد الإجمالي للبلاط وعدد من البلاط على الشاشة (عموديا). أنا خسر تماما لذلك سوف نقدر أي مساعدة أو نصيحة. التقدم والتحرك نحو هدف في شنا (2D) في هذا البرنامج التعليمي سوف تغطي كيفية جعل شيء نقطة والتحرك نحو الهدف. وهذا مفيد للصواريخ صاروخ موجه، الكسالى توجيه نحو لاعب الخاص بك، مشيرا سيارة في اتجاه كنت القيادة أو بندقية نحو هدف، الخ، الخ (تحصل على فكرة). ماذا سنغطي ما هي المتجهات كيفية الحصول على الاتجاه من نقطة إلى أخرى كيفية التحرك تدريجيا نحو هدف محدد كيفية توجيه Texture2D في الاتجاه الصحيح كيفية اختيار مركز دوران لصورك ما هي ناقلات تخيل أنك وجدت خريطة الكنز تبحث شيئا من هذا القبيل: هذه الخريطة يرشدك إلى كوتوالك جنوب 4 أميال، غرب 3 أميال، وجنوب 2 أميالكوت. لذلك تتكون التعليمات من ثلاثة أجزاء، ولكل منها اتجاه ومسافة. في الفيزياء يتم تعريف ناقلات as160 اتجاه وقوة (التفكير في بعدنا). لذلك كانت تؤثر أساسا على موقفنا باستخدام ثلاثة ناقلات. تلك التعليمات المذكورة أعلاه سوف تقودك إلى نفس نقطة النهاية كما هي أدناه: ولكن هنا هناك تعليمات واحدة فقط: الحصة في اتجاه الجنوب والجنوب الغربي، وهو الاتجاه الذي يقودك 6 أميال إلى الجنوب و 3 أميال ويستكوت. في شنا لدينا فئة لتخزين الحركة في 2 أبعاد: فئة Vector2. يقوم المتجه 2 بتخزين الحركة أفقيا (X) وعمودي (Y)، مما يجعلها مفيدة أيضا لتخزين موضع شيء ما. عند البرمجة في 3D، يمكنك استخدام Vector3، الذي يعطيك بعدا إضافيا (المحور Z). في XNA160 سيتم كتابة تعليمات الخرائط العليا: لاحظ أن مشغلي أريثميثيك كوتكوت، كوت-كوت، كوتكوت، كوتكوت جميع العمل على Vector2 - وهو أنيق جدا لحساب القوة الناتجة على كائن. على سبيل المثال إذا ثلاث قوى: الجاذبية، التوجه من محركات الصواريخ الخاصة بك والاصطدامات نيزك جميعا أن يؤدي إلى تأثير مجتمعة يمكن تصديقها على سفينة الفضاء الخاصة بك أول مضمونة. كيفية الحصول على الاتجاه من نقطة واحدة إلى آخر دعونا ننظر في مثال مختلف في شنا. في الرسم التوضيحي أدناه لدينا اثنين من الكائنات Vector2 (3،2) و (4،6). لاحظ أنه في هذه الحالة نحن نستخدم الكائنات Vector2 كمواقف، وليس حركة. لذلك لا تتردد في تصورها كنقطتين: 3 بكسل إلى اليمين و 2 بكسل أسفل من الزاوية العلوية اليسرى 4 بكسل إلى اليمين و 6 بكسل أسفل من الزاوية العلوية اليسرى إذا كنت أتساءل لماذا (0،0) هو في أعلى الزاوية اليسرى، بدلا من أسفل اليسار، هذا فقط لأن هذا هو الطريقة التي كانت في البرمجة منذ فجر أجهزة الكمبيوتر. الآن نحن نريد لمعرفة ما هو الاتجاه من مطلق النار إلى الهدف (في الوقت الراهن باعتبارها ناقلات، وليس راديان). عندما نريد حساب الاتجاه (والمسافة) من كائن إلى آخر نطرح موقف كائن الاستهداف من موضع الهدف. وهذا يعطينا ناقلا الذي يحتوي على ما نحن في عداد المفقودين من أجل الوصول إلى الهدف من الهدف. في وقت لاحق ننظر جيدا في كيفية تحويل هذا إلى درجات، من أجل رسم صورة الاستهداف بشكل صحيح. في شنا هذا سوف يساعدك على تذكر ما يطرح من ما إذا (مثلي) لديك صعوبة في تذكر ما إذا كان طرح موقف الرماة من الأهداف أو العكس بالعكس، مثلي: التفكير في مثال بسيط جدا: مطلق النار في ( 1،1)، مستهدفا (2،2). (وهذا يعني أن مطلق النار يجب أن ينهار والحق (1،1)) ثم العثور على الطريقة الصحيحة بسرعة عن طريق التجربة والخطأ: مطلق النار ناقص الهدف. (1،1) - (2،2) (-1، -1) خاطئة. لأن (-1، -1) هو أعلى واليسار، بعيدا عن الهدف وهناك طريقة أخرى للتفكير في ذلك هو: عندما طرح شيئا من شيء آخر، الجزء الذي يطرح يصبح كوزيروكوت الجديد، كوفيرفيرنت بوينتكوت أو كوتوورلد سنتركوت. يصبح الجزء الذي يقارن أو ننظر إلى أمور أخرى فيما يتعلق. التفكير في حفيد (عمر 7) وجدها (سن 67). (7) من الجد (67) يخبرك كم من كبار السن مقارنة الجد مع الحفيد: 67 - 7 60. طرح الجد (67) من الحفيد (7) يخبرك كم أصغر سنا الحفيد هو مقارنة بالجد: 7 - 67 -60. عندما تستهدف شيئا - تريد موقف الأهداف في العلاقة إلى (بالمقارنة مع) مطلق النار - لذلك كنت طرح مطلق النار من الهدف (على أي حال - من المنطقي بالنسبة لي). كيفية التحرك تدريجيا نحو هدف محدد: الحصول على الاتجاه دون مسافة ما زلنا بحاجة إلى خطوة واحدة أخرى قبل أن نتمكن من استخدام الفرق بين الموقف الحالي ووجهة لدينا لاطلاق النار أو الحركة. إذا استخدمنا الفرق المحسوب كحركة ل أورك بولاركارستومبي داركفروستي في طريقة تحديث الألعاب ()، فإن الكائن الذي تم نقله سيصل إلى الوجهة في وقت واحد. في هذه العينة رمز، تخيل لدينا اثنين Vector2s، تخزين موقف لاعب و أورك. نريد أورك لمطاردة لاعب لدينا. هنا هو كيف لا نفعل ذلك والنتيجة هي أننا وضع موقف العفاريت إلى موقف لاعبين لدينا في لحظة: ما نحن نريد أن نفعل ما نريده هو التحرك تدريجيا، لذلك نحن نريد لنقل جزء فقط من المسافة. ولكن في الاتجاه الصحيح. للحصول على الاتجاه فقط من ناقلات كنت تطبيعه، مما أدى إلى ما يسمى فيكتوركوت كوتونيت (متجه بطول 1). وهذا يعني أن لديك العلاقة بين Y و X سليمة ولكن إذا كنت تستخدم ناقلات للحركة التي تتحرك فقط 1 وحدة من أي حجم العالم الذي تعيش فيه. هنا يمكنك أن ترى لدينا ناقلات الأصلي والنسخة العادية هنا هو رمز ل تطبيع ناقلات في شنا: الانتقال بسرعة معينة عندما يكون لديك متجه وحدة، يمكنك المضي قدما وضرب سرعتك على هذا المتجه. وهذا سوف تحصل على ناقلات مع طول تحتاج لسرعة معينة. ثم يمكنك إضافة ناقلات الناتج إلى ما تريد نقله: كيفية توجيه Texture2D في الاتجاه الصحيح الآن بعد أن نعرف كيفية الحصول على متجه وحدة مشيرا نحو هدف معين، يمكننا استخدامه لرسم صورة لافتا إلى أن استهداف. حساب الاتجاه في رسم راديان الصورة باستخدام واحدة من العديد من الطرق سبريتباتش. دراو (طاقتها)، والتي تشمل دوران. ولكن قبل أن نتمكن من القيام بذلك، نحن بحاجة إلى معرفة كيفية تحويل Vector2 إلى شنا راديان. كيف شانا راديان تختلف عن تلك التي سمعت عنها في الهندسة لسبب ما، في شنا ثيف اختارت للذهاب مع نظام مختلف من الزوايا مما قد تتذكره من الهندسة. في شنا صفر درجة راديان هو أوب - تقليديا هو رايت. في شنا تذهب كلوكويز كما يحصل على زاوية أكبر - تقليديا تذهب كونتر-كلوكويز. ماذا يعني هذا بالنسبة لك كمبرمج لعبة البقاء في نظام الإحداثيات التقليدية لجميع حساب دوران والحركة للوحدات، الخ ثم الحق قبل رسم الملمس، وتحويل دوران إلى نظام تنسيق شنا. حتى الآن كنت أعلم أن، هيريس رمز: كيفية تحويل Vector2 إلى شنا راديان، لرسم نسيج كيفية تحويل راديان يوكليديان إلى شنا راديان لرسم نسيج لتعطيك مثالا على كيفية استخدام هذا في لعبة - إيف وقدم قليلا تجريبي من توجيه السهم نحو مؤشر الماوس: مشروع نموذج - توجيه نحو مؤشر الماوس هنا هو فيديو صغير يظهر محتويات المشروع عينة. دوران وحركة نحو Vector2 أدناه هنا هو جوهر التعليمات البرمجية من العينة. في الجزء العلوي من التعليمات البرمجية يمكنك أن ترى المتغيرات أحتاج إلى تخزين المعلومات حول السهم والماوس. في طريقة التحديث () يمكنك أن ترى كيف أحسب دوران الصورة باستخدام طريقة Vector2ToRadian أعلاه. رسم الصورة لسهولة الرسم، مع دوران الصحيح في اللعبة الخاصة بك، فمن الضروري أن يكون الصورة التي تريد استخدامها لافتا صعودا، وهذا هو 0 درجة راديان في شنا كما رأيت أعلاه في الفصل كوهو راديون شنا تختلف عن تلك التي سمعت عنها في جيوميتريكوت. حتى إذا كنت تريد صاروخ لمطاردة شخص ما، أو غيبوبة لمواجهة شخص ما - العثور على أو إنشاء صورة حيث يواجه الأمر مثل هذا: هنا هو طريقة رسم () من تطبيق العينة. المعلمات الهامة الثلاثة لفهم هنا هي أروبوسيتيون - الذي هو المكان الذي نريد أن يتم رسم السهم أرواروتاتيونينراديانز - الذي هو دوران (في شنا راديانز) من صورة Vector2.One 64 - وهو نفس المتجه الجديد 2 (64، 64)، الذي يحتاج إلى مزيد من التوضيح: كيفية اختيار مركز دوران للصور الخاصة بك عند استخدام طريقة SpriteBatch. Draw () الذي يسمح لك لتدوير Texture2D كنت الرسم، لديك أيضا لتمرير في النقطة كنت الدورية حولها. افتراضيا هذا هو أعلى الزاوية اليسرى من الصورة، والتي نادرا ما يعطيك ما تريد. هنا يمكنك أن ترى كيف دوران حول مواقف مختلفة على نسيج يعطي نتائج مختلفة: (انقر على الصورة للحصول على نسخة أكبر) حتى تتمكن من رسم الصور الخاصة بك استدارة حول أي موقف (حتى خارج Texture2D) - أنيق آمل أن تستمتع البرنامج التعليمي، إذا كنت لديك أفكار لتحسينه - يرجى الكتابة لي في كوتكر في روب دوت دكوت هذه التدوينة نشرت يوم الجمعة، 28 ديسمبر، 2012 في 20:27 ويودع تحت أونكاتغوريزد. يمكنك متابعة أي ردود على هذا الإدخال من خلال تغذية رسس 2.0. يمكنك ترك الرد. أو التتبع من موقعك. 4 الردود على 8220Pointing والتحرك نحو هدف في شنا (2D) 8221 شكرا، وأوضح لطيفة جدا، حتى الطرح ناقلات. شكرا مرة أخرى قراءة رائعة سؤال واحد، ويقول إذا كنت تريد أن تتحرك تدريجيا كائن من موقف إلى آخر ثم تتوقف عند وصول الكائن وجهتها. لأننا تضرب ناقلات مع تعويم سوف تحصل حقا، قريبة حقا ولكن ليس فقط على الوجهة بالضبط. إم تتحرك إلى 64،30، إل الحصول على حوالي 63.999992، 29.999991 ماذا يكون وسيلة قياسية لحل هذه المشكلة روندينكلامبينغ. ما أقوم به عادة هو التحقق من المسافة إلى الهدف لكل تحديث. إذا كانت المسافة أصغر من عتبة إيف المحدد (ويقول 2 بكسل أو وحدات إذا كنت سوف)، وأنا نقل كائن متحرك على رأس الهدف ووقف التحرك. هل هذا العمل بالنسبة لك أطيب التحيات - جاكوب نعم، هذا هو بالضبط النهج ذهبت للحصول على طول متجه المسافة والتحقق مما إذا كان طول أقل من السرعة المحددة. إذا كان طول أقل من سرعة أعود ناقلات الوجهة. شكرا جاكوب هيريس طريقة إم باستخدام في حالة شخص آخر يحدث أن تواجه هذه المشكلة (لاحظ أن هناك مشاكل مع هذا الأسلوب إذا كنت تجاوزت الوجهة) العام ثابت فيكتور 2 نقل (هذا الموقف Vector2، الوجهة Vector2، سرعة تعويم) فار المقصد جهة - (لوت سبيد) عودة ريتورنغ دستيناتيون ريت ديست سبيد ترك الرد معالج - الجزء 1 جعل العفريت تتحرك حول الشاشة هذا هو الأول في سلسلة أربعة أجزاء لتظهر لك كيفية إضافة بعض الحركة والعمل إلى العفريت الخاص بك. هذا الجزء الأول سوف تذهب على أساسيات الحصول على مدخلات لوحة المفاتيح من لاعب واستخدامه لجعل العفريت التحرك في جميع أنحاء الشاشة. إنشاء مشروع لعبة جديدة: نحن ذاهبون إلى استخدام فئة كوتسبريتيكوت أنشأنا في البرنامج التعليمي كوتكاتينغ 2D سبريت كوت. بدلا من إنشاء مشروع جديد شنا لعبة، يمكنك فقط تحميل المصدر لهذا المشروع والبدء في العمل من هذا المشروع اللعبة. إذا كنت تفضل إنشاء مشروع لعبة جديدة للبدء من، ولكن تواجه مشكلة في تذكر كيفية القيام بذلك، فقط اتبع الخطوات في هذا البرنامج التعليمي هنا والعودة إلى هذا البرنامج التعليمي بعد أن قمت بتحديث الذاكرة الخاصة بك. بمجرد أن يكون لديك مشروع اللعبة الجديدة، سوف تحتاج إلى إضافة فئة كوتسبريتيكوت التي تم إنشاؤها في هذا البرنامج التعليمي هنا لمشروعك الجديد. الآن، يتيح إضافة صورة العفريت الجديدة التي نحن ذاهبون لاستخدامها في هذا البرنامج التعليمي لمشروع اللعبة. يمكنك تنزيل صورة المعالج المستخدمة في المشروع من هنا. بعد تنزيل الصورة، أضف صورة المعالج الجديد إلى مجلد المحتوى في اللعبة. إذا كنت تواجه مشكلة في تذكر كيفية إضافة صورة إلى مشروع لعبة شنا، ما عليك سوى اتباع الخطوات في هذا البرنامج التعليمي هنا والعودة إلى هذا البرنامج التعليمي بعد أن قمت بتحديث الذاكرة الخاصة بك. تحسين فئة العفريت: للبدء، سنقوم بإجراء بعض التحسينات على فئة سبريت. تم إجراء هذه التحسينات في كوتادفانسد التمرير مشروع اقتباس الخلفية 2D، ولكن سنذهب عليها الآن. للبدء، ابدأ بإضافة الكائنات التالية إلى أعلى فئة سبريت. أسيتنام هو كائن عام يستخدم لتخزين اسم الصورة ليتم تحميلها من خط أنابيب المحتوى لهذا العفريت. الحجم هو كائن عام يستخدم لإعطاء الحجم الحالي للعفريت بعد تطبيق المقياس. مسكال هو كائن الخاص الذي سوف اقول طريقة رسم كم لتقليص أو تكبير العفريت من حجمه الأصلي. بعد ذلك، كانوا في طريقهم لإضافة خاصية إلى الفصل. غالبا ما تستخدم الخصائص عندما يكون لديك بعض الأشياء الأخرى التي يجب القيام بها عند تغيير قيمة عنصر ما. في حالتنا، عندما يتم تغيير حجم العفريت، نحن بحاجة إلى إعادة حساب حجم العفريت مع هذا النطاق الجديد تطبيقها. قم بإضافة الخاصية التالية إلى فئة سبريت. طريقة لوادكونتينت من فئة سبريت يحتاج إلى تحسين كذلك. قم بتعديل طريقة لوادكونتنت فئة سبريت لتبدو كما يلي. واضاف نحن تخزين اسم الأصول والحساب الأولي من حجم العفاريت. لدينا العفاريت تحتاج إلى أن تكون قادرة على التحرك، لذلك نحن نذهب لإضافة طريقة كوبيداتيكوت جديدة إلى فئة لمساعدتنا على القيام بذلك. قم بإضافة أسلوب التحديث الجديد التالي إلى فئة سبريت. الحركة هي عملية حسابية بسيطة لأخذ اتجاه العفريت يجب أن تتحرك في، والسرعة التي يجب أن تتحرك وضرب تلك في الوقت الذي انقضى ثم ضبط الموقف الأصلي مع تلك النتيجة. ثيديركتيون هو كائن Vector2. قيمة -1 في قيمة X من المتجهات 2 تشير إلى شيء يجب أن تتحرك إلى اليسار. تشير القيمة 0 إلى عدم تحركها على طول المحور X. وتشير القيمة 1 إلى أن العفريت يجب أن تتحرك إلى اليمين. وينطبق الشيء نفسه على قيمة Y للمتجه 2. A -1 يشير إلى أن العفريت يحتاج إلى التحرك صعودا، 0 لا تتحرك في الاتجاه Y و 1 يعني تتحرك لأسفل. تركيبات من X، Y القيم تسبب العفريت للتحرك على طول كل من X، Y محور. ثيسبيد هو مدى سرعة العفريت يجب أن تتحرك في طول محور معين. قيمة 0 يعني أنه لا يوجد لديه سرعة على طول هذا المحور، سرعات أعلى جعل العفريت تتحرك بشكل أسرع على طول محور معين. يتم استخدام ثيجاميتيمي للحفاظ على مدى سرعة التحركات العفريت متسقة عبر أجهزة كمبيوتر مختلفة. من خلال التحرك دائما من قبل كم من الوقت قد انقضى، إذا كان معدل تحديث أجهزة الكمبيوتر أسرع، يجب أن العفريت لا تزال تتحرك بنفس السرعة كما يفعل على جهاز كمبيوتر مع معدل التحديث أبطأ. مع العفريت لدينا تغيير موقف بنجاح، والآن وقتها لرسمه على الشاشة في هذا المنصب الجديد ومع حجمها المحتمل الجديد. قم بتعديل طريقة رسم فئة سبريت لتبدو كما يلي. الكائن سبريتباتش لديه عدة تجاوزات مختلفة لرسم (تجاوزات هي نفس الطريقة، ولكنها تأخذ معلمات إضافية لإعطاء وظائف جديدة). في هذه الحالة، أردنا إعادة حجم العفريت صعودا أو هبوطا وفقا لمقياس لذلك تم تمرير ذلك في. تم استخدام الافتراضات لجميع المعلمات الأخرى من هذا تجاوز معين. في نهاية المطاف في المستقبل قد نستخدمها، ولكن في الوقت الراهن، نحن نريد فقط لوضع وحجم العفريت. ثاتس للتغييرات إلى فئة سبريت في الوقت الحالي. القيام ببناء سريع بناء الآن للتأكد من جميع التغييرات ترجمة بشكل صحيح. لا شيء سيكون مختلفا في اللعبة حتى الآن، ولكن من الجيد للتأكد من أنك لا تملك أي أخطاء قبل أن تحصل على أبعد من ذلك بكثير. إضافة فئة المعالج: سيتم نقل حرف معالج حول الشاشة (قمت بإضافة صورة المعالج إلى المشروع في وقت سابق). المعالج سوف يكون العفريت، ولكن هيس سيكون لديك بعض وظائف إضافية خاصة له كذلك. للقيام بذلك، كانوا في طريقهم لإنشاء فئة جديدة تسمى كوويزاردكوت ثم ترث من فئة سبريت. وريثينغ يمنحك وظيفة الطبقة الأخرى ويسمح لك لإضافة إلى تلك الوظيفة. لها أساس البرمجة الموجهة نحو الكائن. انقر بزر الماوس الأيمن على مشروع اللعبة في مستكشف الحلول. حدد، كوتادكوت، ثم اختر كوتكلاسكوت من إضافة الرجال الفرعيين. سيؤدي هذا إلى فتح مربع الحوار كوتاد نيو إيتمكوت. اكتب الاسم كوتيزاردكوت لفصلك وانقر على الزر كوتادكوت. الآن نحن بحاجة لبدء إضافة بعض الوظائف إلى فئة المعالج. يتيح البدء بإضافة بيانات شنا إطار كوتوسينكوت إلى الجزء العلوي من ملف فئة المعالج. أضف عبارات الاقتباس التالية. هذه المساعدة فقط مع قراءة التعليمات البرمجية لدينا حتى لا تضطر إلى كتابة الكثير للحصول على الكائن المقدمة لنا من قبل إطار شنا. على سبيل المثال، يمكننا استخدام Vector2 بدلا من الاضطرار إلى كتابة Microsoft. Xna. Framework. Vector2 في كل مرة نريد استخدام هذا الكائن. حان الوقت الآن للإشارة إلى أننا نريد أن ترث من فئة سبريت. قم بتغيير تصريح الفئة للمعالج ليبدو كما يلي. فئة المعالج الآن يرث من فئة العفريت ولديه حق الوصول إلى جميع الأعضاء والطرق العامة والمحمية. كان غونغ لاستخدام بعض القيم في الصف مرارا وتكرارا التي لا تتغير. لذلك كانوا في طريقهم لجعل هذه الثوابت من فئتنا. لها ممارسة البرمجة جيدة للوصول الى هذه العادة من إزالة أرقام كوماجيكوت وسلاسل من التعليمات البرمجية الخاصة بك ونقلها إلى المتغيرات والثوابت. عدد السحر أو السلسلة هو أي رقم هو مجرد سحرية في التعليمات البرمجية الخاصة بك مع عدم وجود تفسير حقيقي لما هي القيمة أو لماذا هذه القيمة. قم بإضافة الثوابت التالية إلى أعلى فئة المعالج. الآن يتيح إضافة بعض المزيد من الأشياء مستوى الطبقة التي من شأنها أن تساعد تعطينا وظيفة نحن بحاجة إلى نقل معالجنا العفريت حولها. إضافة الكائنات التالية إلى أعلى فئة المعالج. يتم استخدام إنوم الدولة لتخزين كوتستاتيكوت الحالي من العفريت. ما هي الدولة يمكنك التفكير في الدولة كما أي نوع من العمل تحتاج إلى تتبع بالنسبة لك العفريت لأنه قد تحد من إجراء آخر أو كوتاتاتيكوت. حتى إذا كان العفريت ميتا، أو مدعوم أو القفز أو البط، وما إلى ذلك تلك قد يكون كل كوتاتيسكوت المعالج الخاص بك يمكن أن يكون في وكنت قد ترغب في التحقق لمعرفة ما إذا كان المعالج في (أو لا في) حالة الحالية قبل فعل شيئا أو رسم شيء على الشاشة. حاليا، لدينا معالج لديه حالة واحدة فقط، كووالكينكوت. يستخدم مكورنتستات لتتبع الحالة الحالية من العفريت ومجموعته إلى كووالكينكوت عند إنشائها. يستخدم مديركتيون لتخزين اتجاه المعالج يتحرك في و مسبيد يستخدم لتخزين سرعة العفريت تتحرك في تلك الاتجاهات. يستخدم مسبسكيبواردستات لتخزين الدولة السابقة لوحة المفاتيح كان في آخر مرة فحصنا. وهذا مفيد في الأوقات التي نحن لا نريد تكرار العمل ما لم يقم لاعب الضغط على مفتاح على لوحة المفاتيح مرة أخرى بدلا من مجرد عقد عليه. مع معرفة الحالة السابقة من لوحة المفاتيح يمكننا التحقق من المفتاح تم الافراج عنه من قبل، ولكن يتم الضغط عليه الآن ثم القيام بأي عمل نحن بحاجة إلى القيام به لهذا المفتاح. يحتاج المعالج إلى تحميل صورة المعالج الجديد، لذلك كانوا ذاهبين إلى نموذج بعد فئة العفريت الأساسي وإضافة أسلوب لوادكونتنت إلى المعالج. إضافة أسلوب لوادكونتينت التالي إلى فئة المعالج. لا يأخذ أسلوب لوادكونتنت فئة المعالج في اسم أصل مثل فئة سبريت لا. ويرجع ذلك إلى أن فئة المعالج تعرف أصلا مادة العرض التي تحتاج إلى تحميلها. لذلك أولا، فإنه يحدد الموقف الأولي من المعالج (باستخدام الثوابت أعلننا لموقفين x و y ابتداء) ومن ثم يستدعي الأسلوب كوتلودكونتنتكوت الطبقة سبريت قاعدة أنه يرث من. فإنه يمر في طريقة لوادكونتنت إدارة المحتوى الذي تلقت في عندما تم استدعاء الأسلوب لوادكونتنت ثم ثابت أعلننا عن اسم الأصول. ستقوم طريقة كوتلودكونتنتكوت فئة سبريت الآن بتشغيل وتنفيذ كل التعليمات البرمجية الخاصة به. الآن، نحن بحاجة إلى إضافة أسلوب كوبيداتيكوت إلى فئة المعالج. هذه الطريقة سوف تأخذ الرعاية من التحقق من المدخلات وتحريك العفريت حولها. قم بإضافة أسلوب التحديث التالي إلى فئة المعالج. طريقة التحديث أولا يحصل على الحالة الحالية من لوحة المفاتيح. هذا هو مبني في وظائف إطار شنا وباستدعاء كوتكيبرد. جيتستات () كوت، فإن إطار شنا تقرير لكم جميع المفاتيح التي يتم الضغط وليس الضغط على لوحة المفاتيح. بعد ذلك، نسمي طريقة كوبيداتيموفيمنتكوت تمر في حالة لوحة المفاتيح الحالية. لقد كتبنا هذه الطريقة حتى الآن، لكننا سنقوم قريبا. ثم، نقوم بتخزين حالة لوحة المفاتيح في كائن مسبسكيبواردستات لدينا. وهذا سوف يساعدنا عندما نصل إلى نقطة أننا بحاجة للتحقق من أن مفتاح لم يتم الافراج ثم الضغط مرة أخرى. ونحن لن يكون استخدام هذه الوظيفة لهذا البرنامج التعليمي، ولكن لها عادة جيدة للوصول الى للتأكد من أنها متاحة عند التحقق من مدخلات لوحة المفاتيح لأنك ملزم بحاجة إلى تلك المعلومات في نهاية المطاف. وأخيرا، نطلق على طريقة التحديث من فئة العفريت نحن وراثة من. نمر في الوقت الذي انقضى والقيم الحالية للسرعة والاتجاه من المعالج. طريقة التحديث من فئة سبريت ثم استخدام تلك القيم لضبط الموقف من العفريت. ثاتس لطريقة التحديث، ولكن في ذلك وصفنا طريقة كوبيداتيموفيمنتكوت التي لم تكن موجودة. دعونا المضي قدما وإضافة هذه الطريقة الآن. وهذه الطريقة التعامل مع كل من التحقق لمعرفة ما إذا كان واحد من مفاتيح الحركة تم الضغط ومن ثم وضع متغيرات الحركة للعفريت). قم بإضافة الأسلوب كوبيداتيموفيمنتكوت التالية إلى فئة المعالج. طريقة أوبديتيموفيمنت هي الطريقة الرئيسية للحصول على العفريت المعالج لدينا للتحرك. أولا فإنه يتحقق للتأكد من أن المعالج في حالة الحالية للمشي. لدينا معالج يمكن أن يكون حاليا فقط في حالة المشي، ولكن قد يكون هناك أوقات في المستقبل عندما كنا لا نريد لنقله حول إذا هيس ليس حاليا في حالة المشي حتى نتمكن من التحقق. بعد ذلك، نحن صفر من اتجاهه وسرعته. Vector2.Zero هو وسيلة سريعة وسهلة للقول إنشاء جديد Vector2 (0،0). الآن نبدأ فحص لمعرفة ما هي مفاتيح الضغط. أولا نتحقق لمعرفة ما إذا تم الضغط على مفتاح السهم لليسار أو مفتاح السهم لليمين. إذا كانت، ثم وضعنا السرعة على طول محور X وتشير إلى الاتجاه. ثم نتحقق لمعرفة ما إذا تم الضغط على السهم لأعلى أو السهم لأسفل. ومرة أخرى، إذا كانت، ثم وضعنا السرعة على طول محور Y وتشير إلى الاتجاه. الآن، عندما يتم استدعاء base. Update من فئة العفريت (الذي يحدث في طريقة التحديث لدينا بالفعل)، سيتم تمرير القيم الجديدة لسرعة المعالج والاتجاه وسيتم نقل العفريت معالجنا بشكل مناسب. قم بإجراء بناء سريع للتأكد من أن فئة المعالج يتم تجميعها بشكل صحيح بدون أخطاء. أنت لن ترى المعالج على الشاشة حتى الآن (إذا كنت بناء هذا قبالة كوتريكاتينغ مشروع 2D سبريتكوت يجب أن لا تزال مجرد رؤية العفاريت رسمها على الشاشة وأنك لن تكون قادرة على نقلها. لذلك لا يزال لدينا بعض التغييرات النهائية لجعل ، ونحن بحاجة إلى تغيير فئة Game1.cs لاستخدام فئة المعالج الجديد بدلا من فئة سبريت. تعديل فئة Game1.cs: نريد إزالة مراجع لاستخدام فئة سبريت فقط وبدلا من ذلك استخدام فئة المعالج لدينا، لذا يجب القيام بذلك التي سيتم حذف بعض التعليمات البرمجية ثم قم بإضافة بعض التعليمات البرمجية الجديدة لاستبدالها. حذف الأسطر التالية من التعليمات البرمجية من أعلى فئة Game1.cs الآن إضافة السطر التالي من التعليمات البرمجية إلى أعلى فئة Game1.cs. الآن، قم بتعديل الأسلوب إنيتياليز، لتبدو كما يلي: سيؤدي هذا إلى إنشاء مثيل جديد من سبرايت المعالج (وأزلنا الأسطر القديمة من التعليمات البرمجية التي كانت تقوم بإنشاء مثيلات جديدة من فئة سبريت)، ونحن بحاجة الآن لتحميل المحتوى من معالجنا تعديل طريقة لوادكونتنت من Game1. كس لتبدو كما يلي. مع تحميل المحتوى العفريت المعالج لدينا، يتيح إضافة في القدرة على فئة Game1.cs إلى كوبيداتيكوت المعالج. عدل طريقة التحديث لتبدو كما يلي. وأخيرا، نريد أن نرسم معالجنا. قم بتعديل طريقة رسم فئة Game1.cs لتبدو كما يلي. الآن بعد أن قمنا بتعديل فئة Game1.cs بشكل مناسب لاستخدام فئة المعالج الجديد، قم ببناء ومشاهدة النتائج. يجب الآن أن يتم رسم المعالج إلى الشاشة، ويجب أن تكون قادرا على تحريكه حولها مع أعلى، أسفل، يسار واليمين مفاتيح الأسهم. تهانينا لقد نجحت في معرفة كيفية جعل العفريت تتحرك حول الشاشة في اللعبة. يمكنك التفكير في بعض الأشياء التي يمكن تغييرها يمكنك إضافة العفاريت القديمة مرة أخرى في ورسمها على الشاشة ما رأيك سوف يحدث إذا حاولت إضافة اثنين من المعالجات لعبة اللعب معها، التجربة وطرح الأسئلة. الأهم من ذلك كله تأكد يورسكور يلهون
Comments
Post a Comment