پیاده سازی تشخیص ضربه برای هر نوع MapChip

صفحه به روز شده :
تاریخ ایجاد صفحه :

محیط تایید

ویندوز
  • ویندوز 11
ویرایشگر یونیتی
  • دانلود: 2021.3.3f1
بسته سیستم ورودی
  • 1.3.0

پیشنیازهای این نکته

تنظیمات زیر از قبل به عنوان یک فرض برای توصیف این نکته ساخته شده است.

پیش شرط این نکته چیست؟

درباره مواد نقشه قرض گرفتن

ما پردازش از سایت های زیر قرض گرفته شده است.

در ابتدا

این بار، MapChips در یک TileMap قرار می گیرد و تصمیم گرفته می شود که ایا با توجه به نوع MapTip قرار گیرد.

از انجا که این نکته تا حد زیادی همان نکته دیگری است که "تشخیص ضربه را با tilemaps پیاده سازی کنید"، لطفا برای توضیح دقیق به انجا مراجعه کنید. در اینجا، فقط روش برای محتوای مشابه توضیح داده می شود و فقط تفاوت ها اضافه می شود.

پیاده سازی شخصیت های پیاده روی

اول، یک تصویر روح را اماده کنید که بازیکن برای انجام عملیات تشخیص ضربه کنترل می کند و ان را به پروژه خود اضافه می کند. این بار، اندازه maptip 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);
    }
  }
}

اسکریپتی که ایجاد می کنید به شیء نویسه متصل می شود.

بازی را اجرا کنید و بررسی کنید که ایا شخصیت با صفحه کلید حرکت می کند.

اماده سازی MapTips

یک تصویر maptip اماده کنید و ان را به پروژه خود اضافه کنید. همانطور که تعداد تراشه های نقشه افزایش می یابد، تنظیم مشکل می شود، بنابراین این بار ما تنها دو مربع را اماده کرده ایم، یکی که می تواند راه برود و دیگری که نمی تواند راه برود.

تصاویری را که به پروژه خود اضافه کرده اید انتخاب کنید و تنظیمات MapChips را پیکربندی کنید. برای اطلاعات بیشتر به نکات زیر مراجعه کنید:

پس از پیکربندی، روی دکمه درخواست و سپس دکمه ویرایشگر روح کلیک کنید.

تقسیم بر 32 پیکسل.

برای ایجاد یک پالت ، برگه Tile palette را انتخاب کنید. اگر هیچ زبانه ای وجود ندارد، می توانید انها را از منو با "Window > 2D -> Tile Palette" نمایش دهید. نام پالت می تواند هر چیزی باشد، اما در اینجا "MapChipPalette" است.

از انجا که ما ان را در یک پوشه ذخیره می کنیم، یک پوشه جدید "MapChipPalette" را در پوشه Scene ایجاد کنید و ان را مشخص کنید.

یک پوشه MapChipPalette به پروژه اضافه شده است.

بعد، MapTips را به پالت اضافه خواهید کرد. کشیدن و رها کردن تصویر maptip تقسیم بر روی پالت.

MapTips به پالت اضافه شده است.

ایجاد یک نقشه

تنظیمات تشخیص ضربه را کنار بگذارید و ابتدا نقشه را ایجاد کنید. بعدا می توانید Hit Detection را تنظیم کنید. ابتدا یک نقشه کاشی به سلسله مراتب خود اضافه کنید.

پس از اضافه شدن، Tilemap را انتخاب کنید. منظره یک شبکه را نشان می دهد.

اول، یک mapchip را تنظیم کنید که در منظره به یک دیوار تبدیل نشود.

در حال حاضر، من ان را در همه جا گذاشتم.

بعد، نقشه سنگی را قرار دهید که به عنوان دیوار خدمت می کند.

این بار هیچ مشکلی وجود نداشت، اما اگر شخصیت شما در پشت نقشه قرار دارد، ترتیب لایه را به تعداد بزرگتر از Tilemap تنظیم کنید.

البته، حتی اگر بازی را در این نقطه حرکت دهید، از دیوار عبور می کنید و راه می روید.

MapChip تنظیمات تشخیص ضربه

از اینجا، ما تعیین خواهیم کرد که ایا برای هر نوع تراشه نقشه قضاوت کنیم. ابتدا پوشه "MapChipPalette" را که هنگام ایجاد پالت ایجاد کرده اید باز کنید.

یک maptip مجموعه ای در پالت در داخل وجود دارد، بنابراین ابتدا یک maptip را انتخاب کنید که می توانید بر روی ان راه بروید.

از بازرس، مقدار نوع Collider را به None تنظیم کنید. بعدا، شما یک تنظیم تشخیص برخورد را به Tilemap اضافه خواهید کرد، اما تنظیم ان به "None" از برخورد این mapchip جلوگیری می کند.

نقشه سنگی دیگر به "Grid" تنظیم شده است. از انجا که این بار یک نقشه شفاف نیست، هیچ مشکلی با "sprite" وجود ندارد، اما اگر ان را به "sprite" تنظیم کنید، با ضربه زدن به بخش شفاف تصویر قضاوت نخواهد شد.

این تمام چیزی است که برای MapTip وجود دارد. این اسان است زیرا این بار فقط دو تا از انها وجود دارد، اما اگر تعداد زیادی تراشه نقشه دارید، باید ان را تنظیم کنید.

تنظیمات تشخیص برخورد

از اینجا، تقریبا همان محتوای "پیاده سازی تشخیص ضربه با tilemap" است.

ابتدا تنظیمات لازم را برای تشخیص برخورد شخصیت انجام دهید. "Physics 2D-> Circle Collider 2D" را به عنوان یک جزء اضافه کنید. این بار، روح گرد است، بنابراین من ان را یک دایره، اما لطفا جعبه یا کپسول با توجه به شکل را انتخاب کنید.

ما همچنین "Physics 2D -> Rigidbody 2D" را اضافه خواهیم کرد.

مقیاس جاذبه را روی 0 تنظیم کنید تا از سقوط گرانش جلوگیری شود. همچنین، Z را برای "چرخش ثابت" بررسی کنید تا از چرخش روح جلوگیری شود.

برای Tilemap، Tilemap -> Tilemap Collider 2D را اضافه کنید.

شما می توانید ببینید که یک خط سبز در اطراف maptip سنگ در نظر اضافه شده است. این بدان معنی است که تشخیص ضربه فقط برای سنگ ها تنظیم شده است. شما می توانید ببینید که تنظیم نوع برخورد دهنده maptip در پالت بالا منعکس شده است.

سعی کنید در حال اجرا بازی و راه رفتن به سمت دیوار. من فکر می کنم شما می توانید مطمئن شوید که شخصیت در مقابل دیوار به درستی متوقف می شود. شما می توانید ببینید که می توان ان را به راحتی اجرا بدون نوشتن هر گونه برنامه های مربوط به تشخیص ضربه.

ترکیب MapChip تشخیص ضربه

همانطور که در نکات زیر ذکر شده است، هنگامی که شما در واقع ان را حرکت می دهید، رفتار تشخیص ضربه دیوار کمی عجیب است. علت و راه حل در نکات زیر شرح داده شده است.

با این حال، با ترکیب بخش تشخیص ضربه تراشه نقشه، رفتار عجیب و غریب اصلاح خواهد شد و بار پردازش در همان زمان کاهش می یابد، بنابراین اجازه دهید ان را حداقل انجام دهیم.

ابتدا "استفاده در کامپوزیت" را در برخورد دهنده Tilemap 2D بررسی کنید.

در زیر Add Component، Physics 2D -> Collider Composite 2D را انتخاب کنید.

"Rigidbody 2D" نیز اضافه خواهد شد، بنابراین "نوع بدن" را به "استاتیک" تبدیل کنید.

سپس، من فکر می کنم شما می توانید تایید کنید که قضاوت ضربه سنگ برای هر تراشه نقشه نیست و ترکیب شده است.

حالا بازی را اجرا کنید و مطمئن شوید که به درستی کار می کند.