Реалізуйте виявлення звернень для кожного типу MapChip

Сторінка оновлюється :
Дата створення сторінки :

Середовище перевірки

Вікна
  • вікна 11
Редактор єдності
  • 2021.3.3f1
Пакет системи введення
  • 1.3.0

Передумови для цієї поради

Наступні настройки були зроблені заздалегідь як передумова для опису цієї поради.

Які передумови до цієї поради?

Про запозичення картографічних матеріалів

Ми обробляємо запозичені з наступних сайтів.

Спочатку

Цього разу MapChips розміщуються в одній TileMap, і вирішується, чи виконувати визначення звернення відповідно до типу розміщеного MapTip.

Оскільки ця порада багато в чому така ж, як і інша порада "Реалізувати виявлення звернень за допомогою tilemaps", Будь ласка, зверніться туди для детального пояснення. Тут пояснюється тільки процедура для того ж змісту, і додаються лише відмінності.

Реалізація ходячих персонажів

Спочатку підготуйте спрайт-зображення, яким гравець буде керувати для виконання операції виявлення звернень і додайте його в свій проект. На цей раз розмір картографа становить 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);
    }
  }
}

Сценарій, який ви створюєте, приєднується до об'єкта символів.

Запустіть гру і перевірте, чи рухається персонаж за допомогою клавіатури.

Підготовка картПідказки

Підготуйте зображення maptip і додайте його до свого проекту. Зі збільшенням кількості фішок карти налаштування стає клопіткою, тому цього разу ми підготували лише два квадрати, один, який можна пройти, а той, який не може ходити.

Виберіть зображення, які ви додали до свого проекту, і налаштуйте параметри для MapChips. Перегляньте наступні поради для отримання додаткової інформації:

Після налаштування натисніть кнопку Застосувати, а потім кнопку Редактор спрайтів.

Ділення на 32 пікселі.

Виберіть вкладку Палітра плиток, щоб створити палітру. Якщо вкладок немає, ви можете відобразити їх з меню за допомогою «Window > 2D -> Tile Palette». Назва палітри може бути будь-яким, але тут це "MapChipPalette".

Оскільки ми збережемо його в папці, створіть нову папку "MapChipPalette" в папці Scene і вкажіть її.

До проекту додано папку MapChipPalette.

Далі ви додасте MapTips до палітри. Перетягніть розділене зображення підказки на палітру.

У палітру додано MapTips.

Створити карту

Залиште налаштування виявлення звернень осторонь і спочатку створіть карту. Ви можете налаштувати виявлення звернень пізніше. Спочатку додайте карту плиток до ієрархії.

Після додавання виберіть Tilemap. У поданні відображається сітка.

Спочатку встановіть картографічну фішку, яка не стає стіною в полі зору.

До пори до часу я все це розклав.

Далі розміщують кам'яну картунаконечника, який буде служити стіною.

Цього разу проблем не було, але якщо ваш персонаж буде за картою, встановіть порядок шарів на число, більше за Tilemap.

Звичайно, навіть якщо ви перемістите гру в цей момент, ви проскочите через стіну і підете.

Налаштування виявлення звернень MapChip

Звідси ми встановимо, чи вводити судження про удар для кожного типу чіпа карти. Спочатку відкрийте папку "MapChipPalette", яку ви створили під час створення палітри.

Всередині в палітрі встановлена підказка, тому спочатку виберіть підказку, по якій ви можете ходити.

У полі Інспектор встановіть для параметра Тип колайдера значення Немає. Пізніше ви додасте налаштування виявлення зіткнень до Tilemap, але встановлення значення "Немає" запобігатиме зіткненню цього чіпа карти.

Інший кінчик карти каменю встановлений на "Сітку". Оскільки цього разу це не прозора підказка, з "спрайтом" проблем немає, але якщо ви встановите його на "спрайт", про нього не судитимуть за натисканням на прозору частину зображення.

Ось і все, що є в MapTip. Це легко, тому що цього разу їх лише два, але якщо у вас велика кількість фішок карти, вам потрібно встановити стільки.

Налаштування виявлення зіткнень

Звідси це майже те саме, що і вміст "Реалізувати виявлення звернень за допомогою tilemap".

Спочатку зробіть необхідні настройки для виявлення зіткнень персонажів. Додайте "Фізика 2D -> Колайдер 2D" як компонент. Цього разу спрайт круглий, тому я зробив його колом, але, будь ласка, виберіть коробку або капсулу відповідно до форми.

Ми також додамо "Фізика 2D -> Rigidbody 2D".

Встановіть шкалу тяжіння на 0, щоб запобігти падінню сили тяжіння. Також перевірте Z для "Виправити обертання", щоб запобігти обертанню спрайту.

Для Tilemap додайте компонент Tilemap -> Tilemap Collider 2D.

Ви можете побачити, що навколо кінчика карти каменю додано зелену лінію на перегляді. Це означає, що виявлення попадання встановлено тільки для каменів. Ви можете побачити, що відображається налаштування типу колайдера на картографічній палітрі вище.

Спробуйте запустити гру і пройти до стіни. Думаю, ви зможете переконатися, що персонаж зупиняється перед стіною належним чином. Ви бачите, що це можна легко реалізувати, не пишучи жодних програм, пов'язаних із виявленням звернень.

Поєднання виявлення звернень MapChip

Як згадувалося в порадах нижче, коли ви насправді переміщуєте його, поведінка виявлення настінних ударів трохи дивна. Причину та способи вирішення описано в наведених нижче порадах.

Однак, об'єднавши частину чіпа виявлення звернень до карти, дивна поведінка буде виправлено і навантаження на обробку одночасно зменшиться, тому давайте зробимо це по мінімуму.

Спочатку перевірте "Використовувати в композиті" в колайдері Tilemap 2D.

У розділі Додати компонент виберіть пункт Фізика 2D -> Композитний колайдер 2D.

Також буде додано «Жорстке тіло 2D», тому змініть «Тип кузова» на «Статичний».

Тоді, я думаю, ви можете підтвердити, що судження про удар каменю не для кожної фішки карти і є комбінованим.

Тепер запустіть гру і переконайтеся, що вона працює належним чином.