كتاب "الوحدة في العمل. التنمية عبر منصة في C #. 2nd كثافة العمليات. الطبعة »

الصورة مرحبا ، habrozhiteli! تم إعادة تصميم الإصدار الثاني من Unity in Action بالكامل لتعريفك بالمناهج والأفكار الجديدة التي تساعدك على تحقيق أقصى استفادة من Unity لتطوير اللعبة. يتم إيلاء المزيد من الاهتمام لتصميم الألعاب ثنائية الأبعاد ، والمفاهيم الأساسية التي يمكن للقارئ وضعها موضع التنفيذ وبناء منصة معقدة ثنائية الأبعاد. يمكن تسمية هذا الكتاب بأمان مقدمة إلى Unity للمبرمجين المحترفين. يمنح Joseph Hawking الأشخاص ذوي الخبرة في مجال التطوير جميع المعلومات اللازمة لمساعدتهم على تعلم أداة جديدة بسرعة والبدء في إنشاء ألعاب جديدة. ومن الأفضل أن نتعلم من مشاريع محددة ومهام عملية.

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

هيكل الكتاب


يقدم الفصل 1 Unity ، وهي بيئة تطوير ألعاب عبر الأنظمة الأساسية. سوف تتعلم نظام المكون الأساسي الذي تقوم عليه الوحدة ، كما ستتعلم أيضًا كيفية كتابة وتنفيذ البرامج النصية الأساسية.

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

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

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

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

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

يقدم الفصل 7 أحدث وظائف واجهة المستخدم الرسومية في الوحدة. واجهة المستخدم مطلوبة لجميع الألعاب ، وتتميز أحدث إصدارات Unity بنظام إنشاء واجهة مستخدم محسّن.

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

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

الفصل 10 يعلم التفاعل مع الشبكة العالمية. سوف تتعلم كيفية إرسال واستقبال البيانات باستخدام التقنيات القياسية مثل طلبات HTTP لتلقي بيانات XML من خادم.

في الفصل 11 ، ستتعلم كيفية إضافة الصوت إلى الألعاب. في الوحدة ، يتم دعم المؤثرات الصوتية القصيرة والتسجيلات الصوتية الطويلة بشكل ملحوظ ؛ يعد كلا خياري الصوت حاسمين لكل ألعاب الفيديو تقريبًا.

في الفصل 12 ، سنجمع شظايا من فصول مختلفة للحصول على لعبة واحدة في النهاية. بالإضافة إلى ذلك ، سوف تتعلم كيفية برمجة عناصر التحكم التي يتم معالجتها باستخدام الماوس وحفظ اللعبة.

عن المؤلف


يعيش جوزيف هوكينج في شيكاغو ويطور برمجيات للبيئات التفاعلية. يعمل في حلول InContext. تمت كتابة الطبعة الأولى من هذا الكتاب خلال فترة وجوده في ألعاب Synapse. كما قام بتدريس تطوير الألعاب في جامعة إلينوي ومعهد شيكاغو للفنون وكلية كولومبيا. موقعه على الانترنت هو www.newarteest.com .

مقتطفات. 6.4.2. ادفع


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

الصورة

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

لكن ، ربما تكون قد أوليت اهتمامًا بالفعل لأحد العوائق ، التي نعمل الآن على القضاء عليها.

6.4.3. التعرف على السطح


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

الصورة

الصورة


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

6.5. ميزات platforming إضافية


لذلك ، اكتشفنا الفروق الدقيقة في تنفيذ الحركات والمشي والقفز للشخصية. سنكمل عرض لعبتنا بميزات بيئية جديدة.

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

الصورة

يرجى ملاحظة: تتكون الخريطة بالكامل من خلايا صغيرة. هذا هو ما يسمح لك بتغطية الشاشة بأكملها مع صورة دون اللجوء إلى صور كبيرة جدًا.

تمت إضافة أداة tilemap الرسمية إلى أحدث إصدارات تطبيق Unity. يمكنك أيضًا استخدام المكتبات الخارجية ، على سبيل المثال ، Tiled2Unity ، وهو نظام يستورد الخرائط التي تم إنشاؤها في محرر Tiled الشهير (والمجاني).

6.5.1. منصات مائلة ومن جانب واحد


الآن في لعبتنا لا يوجد سوى أرضية عادية وكتلة يمكنك من خلالها القفز. ولكن هناك خيارات منصة أخرى. سوف نستخدمها لتنويع المشهد. لنبدأ بالقسم المائل. قم بإنشاء نسخة من الكائن Floor ، وقم بإعطائه اسم Slope ، وأدخل القيم 0 ، 0 ، -25 في حقول تحويل الدوران وانقله إلى اليسار ، مع تعيين قيم –3.47 ، –1.27 ، 0 إلى إحداثيات تحويل التحويل.

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

الصورة

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

غالبًا ما توجد منصات أحادية الجانب في الألعاب ، لذلك لدى Unity وسيلة لتنفيذها. إذا كنت تتذكر ، في وقت سابق عند إضافة مكون Platform Effector ، فقد ألغينا تحديد مربع الاختيار Use One Way. والآن نحن في حاجة إليها! مرة أخرى ، قم بإنشاء نسخة من كائن Floor ، وقم بتسمية "النظام الأساسي" ، وأدخل القيم 10 ، 1 ، 1 في حقول القياس وقم بوضع الكائن الناتج فوق الكلمة ، مع تحديد الإحداثيات -1.68 ، 0.11 ، 0 لذلك ، وتأكد من تحديد خانة الاختيار "استخدام One Way" في القسم منصة المستجيب 2D.

ستكون الشخصية قادرة على الطيران عبر المنصة عند القفز لأعلى ، ولكنها ستمنع الحركة لأسفل. يجب معالجة عيب واحد فقط. ويتضح في التين. 6.11. في Unity ، يمكن عرض sprite في النظام الأساسي أعلى الحرف (لتسهيل رؤيته ، قم بتعيين متغير jumpForce على 7. يمكنك تحرير إحداثيات الحرف Z كما في الفصل السابق ، لكننا سنقوم في هذه المرة بعمل ذلك بشكل مختلف. المكون المسؤول عن التقديم sprites ، هناك ترتيب فرز يحدد نوع sprite الذي سيتم عرضه في الأعلى حدد كائن Player وتعيين المعلمة Order in Layer في قسم Sprite Renderer على 1.

الصورة

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

6.5.2. منصات متحركة


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

الصورة

الصورة

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

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

الصورة

رمز رسم مثل هذا الخط بسيط جدا. في الجزء العلوي من التعليمات البرمجية التي تؤثر على واجهة الوحدة ، أضف السطر باستخدام UnityEditor ؛ (لأن معظم وظائف المحرر موجودة في مساحة الاسم هذه) ، ولكن هذا غير مطلوب في هذه الحالة. فقط أضف هذه الطريقة إلى البرنامج النصي MovingPlatform الخاص بك:

... void OnDrawGizmos() { Gizmos.color = Color.red; Gizmos.DrawLine(transform.position, finishPos); } ... 

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

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

الصورة

الآن الشخصية التي تقفز على المنصة سوف تتحرك معها. في الحقيقة ، كل ذلك تحول إلى تحويل الشخصية إلى طفل من المنصة. أتمنى أن تتذكر أنه بعد تكوين العلاقة الهرمية ، يبدأ الطفل في التحرك بعد الوالد. يتحقق الأسلوب GetComponent () في إدخال 6.7 لمعرفة ما إذا كان السطح الذي تم التعرف عليه عبارة عن نظام أساسي متحرك. في حالة وجود نتيجة اختبار إيجابية ، تصبح جدًا فيما يتعلق بالشخصية ؛ خلاف ذلك ، يتم قطع الطابع من أي سلف.

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

الصورة

الصورة

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

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

»يمكن الاطلاع على مزيد من المعلومات حول الكتاب على موقع الناشر
» المحتويات
» مقتطفات

20 ٪ من القسيمة للباعة المتجولين - الوحدة

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

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


All Articles