ٹائل میپس کے ساتھ ہٹ ڈیٹیکشن نافذ کریں

جب صفحے کی تازہ کاری :
صفحہ تخلیق تاریخ :

تصدیق کا ماحول

Windows
  • ونڈوز 11
یونٹی ایڈیٹر
  • 2021.3.3f1
ان پٹ سسٹم پیکیج
  • 1.3.0

اس ٹوٹکے کے لئے ضروری شرائط

مندرجہ ذیل ترتیبات اس ٹپ کی وضاحت کے لئے بنیاد کے طور پر پیشگی بنائی گئی ہیں۔

اس ٹوٹکے کے لئے کیا شرائط ہیں؟

قرض لینے والے نقشے کے مواد کے بارے میں

ہم مندرجہ ذیل سائٹوں سے قرض لینے پر عمل کرتے ہیں.

چلنے والے کرداروں کا نفاذ

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

اگر آپ چہل قدمی کی حرکت پذیری کو نافذ کرنا چاہتے ہیں تو ، درج ذیل تجاویز دیکھیں:

پروجیکٹ بنانے کے بعد ، جس آبجیکٹ کو آپ پروجیکٹ میں منتقل کرنا چاہتے ہیں اس کی اسپرائٹ امیج شامل کریں۔

تصویر منتخب کریں اور انسپکٹر سے فی یونٹ پکسلز کو 32 پر سیٹ کریں۔ اس کی وجہ یہ ہے کہ میپ چپ کے ایک مربع کا سائز 32 پکسلز ہے ، لہذا یہ اس پر فٹ بیٹھتا ہے۔ ایک بار تشکیل پانے کے بعد ، ذیل میں "لاگو کریں" بٹن پر کلک کریں۔

اسپرائٹ کو منظر میں رکھیں۔

اسپرائٹ کو منتقل کرنے کے لئے اسکرپٹ بنائیں۔ یہ مندرجہ ذیل تجاویز سے ملتا جلتا ہے:

اسکرپٹ کا نام Player اس طرح چھوڑ دیں۔

کوڈ حسب ذیل ہے:

using UnityEngine;
using UnityEngine.InputSystem;

public class Player : MonoBehaviour
{
  // 一定時間ごとに呼ばれます
  void FixedUpdate()
  {
    // キーボードの情報を取得
    var keyboard = Keyboard.current;

    // スプライトの移動処理
    if (keyboard.leftArrowKey.isPressed)
    {
      transform.Translate(-0.1f, 0, 0, Space.World);
    }
    if (keyboard.rightArrowKey.isPressed)
    {
      transform.Translate(0.1f, 0, 0, Space.World);
    }
    if (keyboard.upArrowKey.isPressed)
    {
      transform.Translate(0, 0.1f, 0, Space.World);
    }
    if (keyboard.downArrowKey.isPressed)
    {
      transform.Translate(0, -0.1f, 0, Space.World);
    }
  }
}

آپ جس اسپرائٹ کو منتقل کرنا چاہتے ہیں اس سے منسلک کریں۔

کھیل چلائیں اور چیک کریں کہ آیا آپ اسے کی بورڈ کے ساتھ منتقل کرنا چاہتے ہیں۔

میپ ٹپس کی تیاری

سب سے پہلے، ہم ایک نقشہ تیار کریں گے اور ایک نقشہ بنائیں گے. یہ طریقہ کار مندرجہ ذیل تجاویز سے ملتا جلتا ہے: 2 ڈی ٹائل میپ ایکسٹرا کے ساتھ میپ ٹپس بھی تصادم کا پتہ لگانے کی صلاحیت رکھتے ہیں ، لیکن وہ اس مضمون میں استعمال نہیں ہوں گے کیونکہ طریقہ کار طویل ہوگا۔

میپ ٹپ کی اصل تصویر تیار کریں اور اسے اپنے منصوبے میں شامل کریں۔ آپریشن کو سمجھنے میں آسان بنانے کے لئے، براہ کرم نقشہ چپ مواد کے لئے ایک "چلنے کے قابل جگہ" اور "چلنے کے قابل جگہ" تیار کریں.

انسپکٹر میں میپ چپس کے لئے اسے سیٹ اپ کریں اور لاگو کریں بٹن پر کلک کریں۔ ایک بار تشکیل پانے کے بعد ، اسپرائٹ ایڈیٹر کھولیں۔

یہ 32 پکسل میپٹپ ہے ، لہذا میں اسے 32 پر تقسیم کروں گا۔

ٹائل پیلیٹ ٹیب منتخب کریں۔ اگر نہیں تو ، اسے مینو سے "ونڈو > 2 ڈی - > ٹائل پیلیٹ" کے ساتھ ڈسپلے کریں۔ ایک نیا پیلیٹ بنائیں. نام من مانی ہے ، لیکن فی الحال ہم اسے "میپ چپ پیلیٹ" کہیں گے۔

مناظر میں میپ چپ پیلیٹ فولڈر بنائیں اور اس کی وضاحت کریں۔

اسے پیلیٹ میں گھسیٹ کر میپ ٹپ شامل کریں۔ اسے اس میپ چپ پیلیٹ فولڈر میں محفوظ کریں جو آپ نے پہلے بنایا تھا۔

نقشہ بنائیں

اس بار ، نقشہ ہٹ فیصلہ "ٹائل میپ" کے یونٹوں میں انجام دیا جائے گا۔ لہذا ، ہم دو ٹائلمیپ بنائیں گے ، "ہٹ ڈیٹیکشن کے بغیر ٹائل میپ" اور "ہٹ ڈیٹیکشن کے ساتھ ٹائل میپ"۔

سب سے پہلے ، درجہ بندی میں دو ٹائل میپ بنائیں۔ آپ گرڈ میں دو بنا سکتے ہیں۔ وضاحت کے لئے نام "ٹائلمیپ اوبیجیکٹ" اور "ٹائل میپ گراؤنڈ" ہیں۔

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

ویسے ، اگر کردار چھپا ہوا ہے تو ، کردار آبجیکٹ کا انتخاب کریں اور انسپکٹر کے پرت آرڈر کو 2 پر Sprite Renderer سیٹ کریں۔ تہوں کا ترتیب پہلے سے طے شدہ طور پر 0 ہے اور ٹائل میپ 0 ہے ، لہذا اگر آپ اسے اس قدر سے اوپر بڑھاتے ہیں تو ، یہ پیش منظر میں ظاہر ہوگا۔

اس کے بعد ٹائل میپ آبجیکٹ منتخب کریں اور وہ نقشہ بندی رکھیں جسے آپ حرکت کے بغیر بنانا چاہتے ہیں۔ سب سے پہلے پرت کا آرڈر 1 پر سیٹ کریں۔ یہ اسے زمین کے سامنے ظاہر کرنے کے لئے ہے.

اگر آپ زمین کو چھپاتے ہیں تو یہ ایسا ہی لگتا ہے۔

یقینا ، اس مقام پر ، تصادم کا پتہ لگانے سے متعلق کوئی ترتیبات نہیں ہیں ، لہذا آپ عام طور پر اونچی زمین پر سوار ہوسکتے ہیں۔ اس کے بعد ، ہم تصادم کا پتہ لگانے کا تعین کریں گے۔

تصادم کا پتہ لگانے کی ترتیبات

سب سے پہلے، آئیے کردار کو ترتیب دیتے ہیں. یہ ترتیب تقریبا نیچے دیئے گئے نکات کی طرح ہی ہے ، لہذا میں تفصیلات کو چھوڑ دوں گا اور مختصر طور پر طریقہ کار کی وضاحت کروں گا۔

درجہ بندی سے ایک حروف آبجیکٹ منتخب کریں اور ایڈ اجزاء سے فزکس 2 ڈی - > سرکل کولائیڈر 2 ڈی منتخب کریں۔ اگر آبجیکٹ کی شکل مستطیل ہے تو ، "باکس کولائیڈر 2 ڈی" ٹھیک ہے۔

اسی طرح ، "فزکس 2 ڈی - > سخت باڈی 2 ڈی" شامل کریں۔

خود کار طریقے سے گرنے سے بچنے Rigidbody 2D کے لئے کشش ثقل کا پیمانہ 0 پر سیٹ کریں۔

ٹکراؤ کے وقت اسپرائٹ کو گھومنے سے روکنے کے لئے رکاوٹوں کے تحت زیڈ کو چیک کریں۔

اگلا ، "ٹائل میپ آبجیکٹ" منتخب کریں جسے آپ مارنا چاہتے ہیں اور "جزو شامل کریں" سے "ٹائل میپ - > ٹائل میپ کولائیڈر 2 ڈی" منتخب کریں۔

اس میں بس اتنا ہی ہے۔ آپ کو کسی پروگرامنگ کی بھی ضرورت نہیں ہے. گیم چلائیں اور دیوار بننے والی چیز کو مارنے کی کوشش کریں۔ مجھے لگتا ہے کہ آپ اس بات کو یقینی بنا سکتے ہیں کہ یہ مناسب طریقے سے رک جائے.

تاہم، جب آپ واقعی اسے مارتے ہیں، تو مجھے لگتا ہے کہ رویے میں تشویش کے نکات ہوں گے. یہاں کچھ حل ہیں:

نقشے اور حل کے ساتھ ہٹ کا پتہ لگانے کا غیر آسان طرز عمل

جب آپ دیوار سے ٹکراتے ہیں تو ، آپ کو کچھ چیزیں مل سکتی ہیں جو آپ کو پریشان کرتی ہیں۔

اگر آپ دیوار کے ساتھ چلتے ہیں تو ، آپ درمیان میں پھنس جائیں گے۔

Box Collider 2D مجھے لگتا ہے کہ اگر آپ کسی شے کا استعمال کر رہے ہیں تو یہ ہوگا.

مثال کے طور پر ، نیچے دیئے گئے منظر سے ، جب آپ نیچے بائیں طرف چابی دباتے ہیں تو ، آپ چاہتے ہیں کہ یہ دیوار کے ساتھ بائیں طرف منتقل ہوجائے۔ تاہم، کچھ پیش رفت کے بعد، مجھے لگتا ہے کہ یہ کسی چیز میں پھنس جائے گا اور رک جائے گا.

پوزیشن کے لحاظ سے دیواروں میں دھبوں کو پہچانیں

Circle Collider 2D مجھے لگتا ہے کہ اگر آپ منسلک کرتے ہیں تو یہ سمجھنا آسان ہے۔ دیوار چپٹی ہونی چاہئے ، لیکن اگر آپ اسے دیوار کے ساتھ منتقل کرتے ہیں تو ، آپ دیکھیں گے کہ دیوار اس طرح حرکت کرتی ہے جیسے یہ ناہموار ہے۔

خرابیوں اور رکاوٹوں کی وجوہات اور حل

ایسا ہونے کی وجہ یہ معلوم ہوتی ہے کہ "ہٹ کا تعین میپ چپ کی بنیاد پر کیا جاتا ہے"۔ درحقیقت ، جب آپ ٹائل میپ آبجیکٹ کا انتخاب کرتے ہیں تو ، اس جگہ پر ایک سبز لائن ظاہر ہوتی ہے جہاں ہٹ ڈیٹیکشن واقع ہے ، اور آپ دیکھ سکتے ہیں کہ یہ میپ ٹپ یونٹوں میں کھینچی گئی ایک لائن ہے۔

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

مجھے لگتا ہے کہ اس مسئلے کو حل کرنے کا بہترین طریقہ یہ ہے کہ ہٹ ڈیٹیکشن کو منسلک میپ چپس کے ساتھ یکجا کیا جائے۔ یہ کرنے کا طریقہ یہ ہے:

انسپکٹر سے ہٹ ڈیٹیکشن کے ساتھ "ٹائل میپ آبجیکٹ" منتخب کریںTilemap Collider 2D اور "کمپوزٹ میں استعمال کریں" چیک کریں۔

جیسا کہ انتباہ میں کہا گیا ہے ، اس کا کوئی اثر نہیں ہے ، لہذا "ایڈ کمپونینٹ" سے "فزکس 2 ڈی - > کمپوزٹ کولائیڈر 2 ڈی" منتخب کریں۔

کمپوزٹ کولائیڈر 2 ڈی کے ساتھ ریجیڈ باڈی 2 ڈی شامل کیا گیا ہے۔

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

میں نہیں چاہتا کہ ٹائل میپ حرکت کرے ، لہذا میں اجزاء جسم کی قسم کو "جامد" کے طور پر چھوڑ دوں گا Rigidbody 2D ۔

اب کھیل چلائیں اور اسے آگے بڑھانے کی کوشش کریں۔ مجھے لگتا ہے کہ اگر آپ دیوار کے ساتھ رخی طور پر حرکت بھی کریں تو یہ پکڑا نہیں جائے گا اور آپ بغیر کسی رکاوٹ کے آسانی سے حرکت کر سکتے ہیں۔

دیواروں سے پیچھے دھکیلے جانے والے کردار کو ختم کریں

آپ دیکھ سکتے ہیں کہ اگر آپ کردار کو دیوار کو دھکیلنے کے لئے حرکت کرتے ہیں اور پھر حرکت کرنا بند کر دیتے ہیں تو ، یہ تھوڑا سا ایسا برتاؤ کرے گا جیسے دیوار سے واپس اچھل گیا ہو۔

اس کو حل کرنے کے لئے ،Rigidbody 2D حروف آبجیکٹ کو منتخب کریں اور جزو سے "تصادم کا پتہ لگانے" کو "مسلسل" میں تبدیل کریں۔

"غیر متزلزل" اور "مسلسل" کے درمیان فرق درج ذیل ہے۔

غیر متزلزل

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

مسلسل

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

نقشے کی شے کے کونے میں پکڑا گیا

پروگرام اور مقام پر منحصر ہے، کچھ پکڑے جاتے ہیں اور کچھ نہیں ہیں، اور وجہ زیادہ تبدیل نہیں ہوئی ہے. ویسے ، یہ باکس کولائیڈر 2 ڈی جیسے کوणीय کونوں کے ساتھ ہوتا ہے ، نہ کہ گول دائروں کے ساتھ۔

یہاں تک کہ اگر اس طرح کا پراسرار واقعہ پیش آتا ہے تو ، خرابیوں سے بچنے کے لئے کولائیڈر کے گول کونے رکھنا اچھا ہے۔ یہ باکس کولائیڈر 2 ڈی تک محدود ہے ، لیکن اسے گول بنانے کے لئے ، کردار آبجیکٹ کے باکس کولائیڈر 2 ڈی جزو میں "ایج ریڈیس" ہوتا ہے اور آپ وہاں ایک قدر ڈالتے ہیں۔ اگر آپ 1 کو عددی اکائی کے طور پر داخل کرتے ہیں تو ، آبجیکٹ کے سائز کے لئے راؤنڈنگ ہوگی۔ یہ سائز پر منحصر ہے، لیکن تقریبا 0.1 رکھنا اچھا ہے.

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

اس کے بعد ، کھیل کو اس بات کو یقینی بنانے کے لئے چلائیں کہ اس میں خراش نہ ہو اور ایڈجسٹمنٹ کریں۔