اتحاد کے ساتھ بنیادی اینڈرائیڈ گیم کس طرح تخلیق کریں

اسی طرح کے ٹیوٹوریل میں ، ہم ایک بنیادی بنانے کے طریقوں پر بات کریں گے انڈروئد اتحاد کا استعمال کرتے ہوئے کھیل.



تقاضے:

  • اتحاد
  • ایک اچھا ٹیکسٹ ایڈیٹر جیسے نوٹ پیڈ ++ (اختیاری لیکن تجویز کردہ)
  • Android SDK
اگر آپ کے پاس پہلے سے موجود نہیں ہے تو ، آپ کو اتحاد SDK اور Android SDK بھی ڈاؤن لوڈ اور انسٹال کرکے شروع کرنا چاہئے۔ ہمیں Android SDK کی ضرورت ہے تاکہ ہم Android کے ماحول میں گیم کے APK کو جانچ سکیں۔

اتحاد شروع کریں اور نیا پروجیکٹ بنائیں۔ اسے 2 ڈی پروجیکٹ بنائیں۔



واقفیت کے ل several بہت سے پینل ہیں۔ ہیراارچی پینل جس میں ہمارے سارے منظر عناصر (منظر = جس بھی 'سطح' پر آپ کام کر رہے ہیں) پر مشتمل ہوگا۔ اس کے بعد گیم ٹیب موجود ہے جو ایڈیٹر کے اندر رہتے ہوئے اپنے کھیل کو کھیلنے / جانچنے کے لئے استعمال ہوتا ہے ، اور دائیں طرف آپ کے پاس انسپکٹر پینل ہوتا ہے جہاں آپ مختلف چیزوں جیسے لائٹنگ ، فزکس وغیرہ میں ترمیم کریں گے۔



پہلی چیز جو ہم کرنا چاہتے ہیں وہ ایک سپرائٹ بنانا ہے - یہ ہمارا مرکزی کردار ہوگا (جو ہم کنٹرول کرتے ہیں)۔ آپ یا تو اپنا اپنا اسٹرائٹ کھینچ سکتے ہو ، جیسے آنکھوں سے مربع کھینچیں ، یا آپ انٹرنیٹ سے اسٹرائٹ پکڑ سکتے ہیں - بس یہ یقینی بنائیں کہ یہ ایک .PNG فائل (شفاف پس منظر) ہے۔



اپنی اسپرائٹ کو مرکزی منظر والے ونڈو (سب سے بڑی ونڈو) پر کھینچیں اور گرا دیں - یہ بائیں طرف ہیرارچی پینل پر بھی نظر آئے گا۔

لہذا اب ہم کچھ پلیٹ فارمز تیار کریں گے - یہ آسان چوکور ہوسکتے ہیں ، کیونکہ ہم دیواروں اور دیگر پلیٹ فارمز بنانے کے لئے آسانی سے ان کا سائز تبدیل کرسکیں گے۔

لہذا صرف ایک نیا اسکوائر 'اسپرائٹ' بنائیں اور اسے منظر ونڈو پر ڈریگ اور ڈراپ کریں جیسے آپ نے اپنے اسپرائٹ کریکٹر کے ساتھ کیا تھا۔



اب ہمیں اتحاد کو اپنے مرکزی کردار کو طبیعیات دینے کی ہدایت کرنے کی ضرورت ہے۔ اپنے مرکزی سپرائٹ کیریکٹر پر کلک کریں (یہ منظر ونڈو میں نیلے رنگ میں نمایاں ہونا چاہئے) ، پھر انسپکٹر پینل پر ، 'گیم آؤبیکٹس' کی تلاش کریں۔

'اجزاء شامل کریں> طبیعیات 2D> RigidBody2D' پر کلک کریں۔ اس سے خود بخود آپ کے سپرائٹ میں طبیعیات شامل ہوجائے گی ، جو آپ کو کسی اور SDK میں خود کو اسکرپٹ کرنا پڑے گی۔

ہم مرکزی سپرائٹ کریکٹر کو قابو سے باہر گھومنے سے روکنا چاہتے ہیں - لہذا انسپکٹر پینل میں رکاوٹوں کا ٹیب ڈھونڈیں (منظر عام سے متعلق اسٹرائٹ کے ساتھ ابھی بھی منظر ونڈو میں نمایاں ہیں) ، اور 'فریز روٹیشن زیڈ' کے لئے باکس کو چیک کریں۔

اگر آپ 'پلے' کے بٹن کو ٹکراتے ہیں تو ، آپ کا بنیادی سپرائٹ کریکٹر آسمان سے گرتا ہے اور صرف بے قابو ہوجاتا ہے - ہم بعد میں اس کا خیال رکھنا چاہتے ہیں ، لیکن ذرا اس بات کا بھی نوٹس لیں کہ ہم طبیعیات کو کس طرح آسانی سے استعمال کرسکتے ہیں۔ ہم نے جس طبیعیات کو استعمال کیا ہے اس کا انحصار اسی شکل پر ہوتا ہے جس پر وہ لگائے جارہے ہیں - لہذا اگر آپ وہی طبیعیات کسی دائرے میں لگاتے ہیں تو ، مثال کے طور پر ، یہ چاروں طرف چکر لگائے گا۔

ہم کردار کو گھومنے اور فری وھیلنگ کو روکنے کے لئے اپنا رخ بھی ٹھیک کرنا چاہتے ہیں۔ انسپکٹر میں منتخب کردہ کھلاڑی کے ساتھ ’رکاوٹیں‘ ڈھونڈیں اور گردش Z کو منجمد کرنے کے لئے باکس پر نشان لگائیں۔ اب دوبارہ کھیل پر کلک کریں اور آپ کو اپنے کھلاڑی کو اب آسمان سے اس کے لاتعداد عذاب کی طرف جانا پڑتا ہے۔

ہمارے اہم سپرائٹ کردار کو صرف ختم ہونے سے روکنے کے ل we ، ہمیں ایک ٹکرائڈر شامل کرنے کی ضرورت ہوگی۔ یہ بنیادی طور پر صرف ایک شکل کی ٹھوس خاکہ ہے جسے ہم مرکزی سپرائٹ کردار میں شامل کریں گے۔ اپنے مرکزی سپرائٹ کردار کو نمایاں کریں ، 'اجزاء شامل کریں> طبیعیات 2 ڈی> باکسکولائڈر 2 ڈی پر کلک کریں۔

اب اسی پلیٹ فارم کے ساتھ وہی ٹھیک کام کریں جو آپ نے پہلے بنایا تھا۔ آپ کا بنیادی سپرائٹ کردار اب پلیٹ فارم سے 'ٹکراؤ' اور وہاں رہنا چاہئے۔

لہذا اب ہم یہ یقینی بنانا چاہتے ہیں کہ کیمرا آپ کے مرکزی اسٹرائٹ کردار کی پیروی کرے گا - منظر کے اندر ، پہلے ہی کیمرا آبجیکٹ ہونا چاہئے۔ آپ اسے گھسیٹنا چاہتے ہیں اس کے اوپر مرکزی سپرائٹ کا کردار۔

یہ خاص طور پر اہم ہے اگر آپ تشکیل دے رہے ہو 3D پر مبنی رنر ، کی طرح کچھ ڈھلوان جہاں آپ کو پرائمری گیم آبجیکٹ (آپ کا اہم سپرائٹ کریکٹر) کے پیچھے رہنے کی ضرورت ہوتی ہے۔

اب درجہ بندی کے پینل پر جائیں اور گیم آؤبیکٹس کی فہرست میں ، آپ کیمرہ کھینچنا چاہتے ہیں نیچے مرکزی سپرائٹ کیکٹر (پلیئر گیم آؤٹ آبجیکٹ)۔ اس سے سپرائٹ کا مرکزی کردار ' والدین کیمرے کے. لہذا جب بھی پلیئر گیم آوجیکٹ اسکرین کے گرد گھومتا ہے ، کیمرا کو فالو کرنا چاہئے۔

لہذا اس گیم ٹیوٹوریل کے ل we ، ہم ابھی ایک بنیادی لامتناہی رنر قسم کا کھیل تیار کرنے جارہے ہیں ، جیسے کچھ 3 چلائیں ، جہاں آپ کا مرکزی کردار اسکرین پر چلے گا اور راہ میں حائل رکاوٹیں (یا 'گیم اوور' اگر آپ کسی رکاوٹ کو نشانہ بناتے ہیں تو)۔ اس میں کچھ اسکرپٹس کی ضرورت ہے ، جن میں سے بیشتر اس رہنما کو فراہم کیے جائیں گے۔

'اثاثے' فولڈر پر دائیں کلک کریں اور ایک نیا فولڈر بنائیں۔ اسے نام دیں اسکرپٹس . اب اس نئے فولڈر پر دائیں کلک کریں اور 'بنائیں> سی # اسکرپٹ' کو دبائیں اور اسے نام دیں پلیئرکنٹرولس . یہ اسکرپٹ ہمارے مرکزی اسپرٹ کردار کے طرز عمل کی وضاحت کرنے جارہی ہے۔

جب آپ اس نئے اسکرپٹ پر ڈبل کلک کرتے ہیں تو ، یہ چاہئے بصری اسٹوڈیو میں کھولیں - متبادل کے طور پر (اور میری ذاتی ترجیح) ، آپ اسے نوٹ پیڈ ++ جیسے کچھ میں ترمیم کرسکتے ہیں۔

اسکرپٹ فائل میں اس کے اندر پہلے ہی تھوڑا سا 'بوائلر پلیٹ' کوڈ ہونا چاہئے - بنیادی طور پر یہ اسکرپٹ ہے جس کو تنہا چھوڑنے کی ضرورت ہے یا صرف آپ کی ضروریات کو ایڈجسٹ کرنے کی ضرورت ہے ، اور ہمیں بہت وقت بچائے گا۔ تو ہم ایک نیا اعتراض شامل کرنے جارہے ہیں۔

لائن باطل اسٹارٹ کے اوپر ():

عوام Rigidbody2D rb؛

اگلی تھوڑا سا کوڈ جس میں ہمیں شامل کرنے کی ضرورت ہے وہ اسٹارٹ () میں ہوگی ، اور رقیب کو ڈھونڈنے کے لئے استعمال کیا جاتا ہے - بنیادی طور پر ، ہم اتحاد کو ہدایت دے رہے ہیں کہ ہم نے گیم اوبیکٹس (ہمارے اہم سپرائٹ کیریکٹر) سے منسلک طبیعیات تلاش کریں۔ () جب کوئی نیا اعتراض یا اسکرپٹ تیار ہوتا ہے تو اس پر عمل درآمد ہوتا ہے۔

تو اگلا ، طبیعیات آبجیکٹ کو تلاش کریں۔

rb = گیٹکمپونٹینٹ< Rigidbody2D > ()؛

اور آپ اس لائن کو اپ ڈیٹ () میں شامل کریں گے

rb.velocity = نئی ویکٹر 2 (3 ، rb.velocity.y)؛

اپ ڈیٹ () کیا کرتا ہے اس کو مستقل طور پر تازہ دم کیا جاتا ہے ، لہذا اس میں جو بھی کوڈ شامل ہوتا ہے وہ مسلسل چلتا رہے گا (جب تک کہ اس چیز کو ختم نہ کیا جائے) تو ہم نے کیا کیا اسکرپٹ کو ہدایت دیتے ہیں کہ ہم چاہتے ہیں کہ Y محور (rb.velocity.y) پر اسی رفتار کا استعمال کرتے ہوئے کٹر شخص ایک نیا ویکٹر رکھے ، لیکن افقی محور پر 3 کی رفتار کے ساتھ۔ مستقبل میں ، آپ بھی استعمال کرسکتے ہیں ‘ فکسڈ اپ ڈیٹ () ’ جو مماثل ہے لیکن مختلف ہے ، کیوں کہ آپ اسکرپٹ کی تازہ کاری / تازہ کاری کی مقدار کو کنٹرول کرسکتے ہیں۔

اسکرپٹ کو محفوظ کریں اور اتحاد میں واپس جائیں ، پھر اس کو اجاگر کرنے کے لئے اپنے مرکزی سپرائٹ کردار پر کلک کریں۔ انسپکٹر پینل میں ، اجزاء> اسکرپٹ شامل کریں پر جائیں اور اسکرپٹ شامل کریں جو ہم نے ابھی محفوظ کیا ہے۔ اب جب آپ پلے بٹن پر کلک کرتے ہیں تو ، مرکزی سپرائٹ کیریکٹر کو مسلسل پلیٹ فارم کے کنارے کی طرف بڑھنا چاہئے۔

پلیئر ان پٹ کنٹرولز بنانا

لہذا یہ رکاوٹوں کے ساتھ ختم ہونے والا رنر اسٹائل کھیل ہے ، لہذا ہمیں کھلاڑی کے ل controls کنٹرول شامل کرنے کی ضرورت ہے جیسے ایک 'جمپ' بٹن۔

پہلے سے اسکرپٹ کو دوبارہ کھولیں ، اور ہم یہ اضافی کوڈ شامل کرنے جارہے ہیں:

 اگر (ان پٹ.گٹ ماؤس بٹن ڈاون (0)) b rb.velocity = نئی ویکٹر 2 (rb.velocity.x، 5)؛ }

آپ اسے اپڈیٹ () طریقہ کار کے اندر ڈالیں گے ، اور یہ بنیادی طور پر جو کچھ کرتا ہے وہ اتحاد کو بتاتا ہے کہ جب کھلاڑی اپنے ماؤس کے بٹن پر کلک کرتا ہے (جسے اینڈروئیڈ پر اسکرین ٹیپ کے طور پر ترجمہ کیا جائے گا) تو اس کا بنیادی کردار 'اچھل پڑے گا' ' ہوا میں. اس کی وجہ یہ ہے کہ ہم نے Y محور پر 5 کی قیمت کے ساتھ ایک رفتار شامل کی ہے (یقینا a اس سے زیادہ قیمت کا مطلب ایک اعلی جمپ ہوگا)۔

اگر آپ کوڈنگ کے ساتھ زیادہ واقف نہیں ہیں تو ، ہم نے ایک استعمال کیا اگر بیان کیونکہ اگر بنیادی طور پر ایک 'کرو یا نہ کرو' کی طرح کی ہدایت ہے اگر ایسا ہوتا ہے تو ، یہ حکم کریں . لہذا اگر کھلاڑی ماؤس پر کلک نہیں کررہا ہے (یا ان کی اینڈرائیڈ اسکرین کو ٹیپ کر رہا ہے) تو ظاہر ہے اسکرپٹ نہیں چلے گا۔

آگے بڑھیں اور 'پلے' بٹن پر کلک کریں اور یقینی بنائیں کہ جاری رکھنے سے پہلے یہ صحیح طور پر کام کرتا ہے۔

اگلا ، ہم اپنی رکاوٹیں (جو مرکزی کردار اسپرائٹ کو 'تباہ' کر سکتے ہیں) ، گیم اسکور ، اور 'گیم اوور' مینو شامل کرنے جارہے ہیں۔

اگر آپ نے اب تک کھیل کا تجربہ کیا تو ، ہمارے پاس ابھی تک ایک ہی مسئلہ یہ ہے کہ ہم نے تیار کیا 'جمپ' بٹن دبانے سے کردار کو عبور حاصل ہوجائے گا چاہے وہ گراؤنڈ ہو یا نہ ہو - یہ بنیادی طور پر فلاپی برڈز ہے ، اور رنر کی طرح نہیں ہم چاہتے ہیں. لیکن ہم اسے ٹھیک کرنے جارہے ہیں۔

اسکرپٹ میں ، اس کوڈ کو تھوڑا سا شامل کریں اوپر اپ ڈیٹ () طریقہ:

 عوام گراؤنڈچیک کو تبدیل؛ عوام اسٹارپوزیشن کو تبدیل کریں۔ عوام   تیرنا گراؤنڈچیکارڈیس؛ عوام LayerMask کیاIs گرائونڈ؛ نجی   بول زمین پر؛ اور پھر اس اگلی لائن کو اوپر کے اپ ڈیٹ کے طریقہ کار میں شامل کریں اگر بیان: آن گراؤنڈ = فزکس 2 ڈی۔ اوورلاپ سرکل (گراؤنڈ چیچ.پوزیشن، گراؤنڈ چیچ ریڈیئس، واٹ آئس گرائونڈ)؛ اور اگلے آپ اس اینڈ لائن کو تبدیل کرکے '&&Grand' شامل کریں گے اگر (ان پٹ. گیٹ ماؤس بٹن ڈاون (0) اور اینڈ گراؤنڈ) {لہذا ہماری پوری اسکرپٹ کو بنیادی طور پر اس طرح نظر آنا چاہئے: عوام   کلاس   پلیئرکنٹرولس : مونو بیہویور { عوام Rigidbody2D rb؛ عوام گراؤنڈچیک کو تبدیل؛ عوام اسٹارپوزیشن کو تبدیل کریں۔ عوام   تیرنا گراؤنڈچیکارڈیس؛ عوام LayerMask کیاIs گرائونڈ؛ نجی   بول زمین پر؛ باطل   شروع کریں () {rb = گیٹکمپونٹ ()؛ } باطل   اپ ڈیٹ () b rb.velocity = نئی ویکٹر 2 (3 ، rb.velocity.y)؛ آن گراؤنڈ = فزکس 2 ڈی۔ اوورلاپ سرکل (گراؤنڈ چیک.پوزیشن، گراؤڈ چیک ریڈیئس، واٹ آئس گرائونڈ)؛ اگر (ان پٹ.گٹ ماؤس بٹن ڈاون (0) اور& گراؤنڈ) b rb.velocity = نئی ویکٹر 2 (rb.velocity.x، 5)؛ }}}

ہم نے کیا کیا ہے اس کی وضاحت کے لئے ، ہم نے ایک نیا 'ٹرانسفارم' تیار کیا ہے ، جس کا مطلب کھیل کی دنیا کی جگہ میں ایک مقام ہے۔ ہم نے اس کا رداس طے کرلیا ہے اور ہم اتحاد کو ہدایت دے رہے ہیں کہ یہ جانچ کریں کہ رداس ہماری 'زمینی' پرت سے ڈھل رہا ہے - اور اس طرح اگر ہمارے رداس کو 'گراؤنڈ' کے ساتھ ہم آہنگ کیا گیا ہے تو ، ہمارے کردار کو کودنے کے قابل ہونا چاہئے ، اور اگر ہم ایک چھلانگ سے پہلے ہی ہوا میں ہیں ، ہمیں دوبارہ کودنے کے قابل نہیں ہونا چاہئے۔ بنیادی طور پر ، زمین پر سچ ہوگا اگر نام تبدیل گراؤنڈ چیک زمینی پرت کے ساتھ اوور لیپنگ ہے۔ امید ہے کہ اس کا احساس ہو گا۔

لہذا اسکرپٹ کو محفوظ کریں اور اتحاد میں واپس جائیں ، اور آپ دیکھیں گے کہ کھلاڑی کو اجاگر کرنے کے بعد انسپکٹر میں مزید آپشنز شامل کردیئے گئے ہیں۔ یہ عوامی تغیرات ہیں اور ہم ان کو اپنی پسند کے مطابق کرسکتے ہیں۔

اب ہیرارچی پر دائیں کلک کریں اور ایک نئی خالی شے بنائیں ، اور اسے کھینچ کر لائیں تاکہ مرکزی منظر ونڈو میں مرکزی کردار اسپرٹ کے نیچے اس خالی شے کو پوزیشن میں ڈالیں جہاں ہم چاہتے ہیں کہ منزل کا پتہ لگ جائے۔ آبجیکٹ کا نام 'چیک گراؤنڈ' پر رکھیں ، اور پھر اسے پلیئر کے گیم آبجیکٹ کے نیچے گھسیٹیں جیسے ہم نے کیمرے سے پہلے کیا تھا (آبجیکٹ کے درمیان والدین - بچوں کا رشتہ پیدا کرنے کے لئے)۔ اب خالی شے کیمرا کی طرح مرکزی کردار اسپرٹ کی بھی پیروی کرے گی ، اور اس سے فرش کی فاصلہ فاصلہ کی جانچ پڑتال ہوگی

اب مرکزی کردار سپرائٹ کو منتخب کریں اور انسپکٹر پینل پر جائیں - چیک گراؤنڈ آبجیکٹ کو خلا میں 'گراؤنڈ چیک' کے نام سے گھسیٹیں۔ اس ’’ ٹرانسفارم ‘‘ پوزیشن کو اس نئی شے کی حیثیت کے برابر ہونا چاہئے ، اور جہاں یہ 'رداس' کہتا ہے ، اسے 0.1 بنائیں۔

ہمیں زمینی پرت کی وضاحت کرنے کی ضرورت ہے۔ صرف زمینی علاقے کا انتخاب کریں اور انسپکٹر میں ، 'پرت: ڈیفالٹ' (یہ ایک ڈراپ ڈاؤن باکس ہے) کے لئے بٹن تلاش کریں اور 'پرت شامل کریں' کا انتخاب کریں۔

اب ہمارے پلیٹ فارم کی پرت کے طور پر 'گراؤنڈ' کو منتخب کریں ، اور گیم ونڈو کے کسی بھی دوسرے پلیٹ فارم کے ل for اس کو دہرائیں۔ جہاں یہ ہمارے مرکزی کردار سپرائٹ آبجیکٹ پر 'گراؤنڈ کیا ہے' کہتا ہے ، گراؤنڈ پرت کو بھی منتخب کریں۔

جو کچھ ہم نے کیا ہے وہ پلیئر اسکرپٹ کو جانچ پڑتال کرنے کی ہدایت کرتا ہے۔ اگر اسکرین کا چھوٹا نقطہ پرت سے ملنے والی کسی بھی چیز سے متجاوز ہے ، کردار صرف اس صورت میں کود پڑے گا اگر یہ سچ ہے۔

کھیل ہی کھیل میں تصادم اور کھیل کے مینو پر ختم

لہذا اس سب کو لپیٹنے کے لئے ، حتمی چیزیں جو ہم کرنا چاہتے ہیں وہ ہیں A: کھیل ختم ہونے میں رکاوٹوں سے ٹکراؤ ، اور بی: پلے ون بٹن کے ذریعہ 'گیم اوور' مینو اسکرین بنائیں۔

بنیادی طور پر آپ کیا کرنا چاہتے ہیں وہ ہے:

  1. شامل کریں a پلیئر اعتراض اور تفویض a غیر لچکدار جسم اور ایک ٹکرنے والا اس پر آپ کی پسند کی۔
  2. ایک شامل کریں دشمن اعتراض اور تفویض a غیر لچکدار جسم اور ایک ٹکرنے والا اس کے پاس آپ کا انتخاب (اور اختیاری ، شامل کریں 'دشمن' ٹیگ اس پر)
  3. ایک نیا بنائیں C # اسکرپٹ اور بطور جزو اسے شامل کریں پلیئر (یا پلیئر سے منسلک کسی بھی اسکرپٹ کا استعمال کریں ، اگر آپ کے پاس پہلے سے موجود ہے تو نیا بنانے کی ضرورت نہیں ہے)
  4. اسے اپنی اسکرپٹ میں شامل کریں:
باطل آنکلیژن ایٹر ( تصادم ٹکراؤ) ڈیبگ . لاگ ('تصادم')؛ // یہ دیکھنے کے لئے چیک کریں کہ آیا یہ تصادم بھی رجسٹرڈ کرتا ہے ، اگر یہ کام کرتا ہے تو آپ اس لائن کو ہٹا سکتے ہیں اگر (coll.gameobject. ٹیگ == 'دشمن') { // دیکھتا ہے کہ جس چیز سے آپ کے کھلاڑی کا مقابلہ ہوا اس میں 'دشمن' نامی ایک ٹیگ موجود ہے