Прилагане на откриване на удари за всеки тип MapChip

Страницата се актуализира :
Дата на създаване на страница :

Среда за проверка

Уиндоус
  • Прозорци 11
Редактор на единство
  • 2021.3.3f1
Пакет на входната система
  • 1.3.0

Предпоставки за този съвет

Следните настройки са направени предварително като предпоставка за описанието на този съвет.

Какви са предпоставките за този съвет?

За заемането на материали за карти

Ние обработваме заимствани от следните сайтове.

Отначало

Този път MapChips се поставят в една TileMap и се решава дали да се извърши определяне на удара според вида на поставения 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

Подгответе изображение на карта и го добавете към проекта си. Тъй като броят на чиповете на картата се увеличава, настройката става обезпокоителна, така че този път сме подготвили само два квадрата, един, който може да се ходи и един, който не може да ходи.

Изберете изображенията, които сте добавили към проекта си и конфигурирайте настройките за MapChips. Вижте следните съвети за повече информация:

След като конфигурирате, щракнете върху бутона Приложи и след това върху бутона Sprite Editor.

Разделете на 32 пиксела.

Изберете раздела Палитра с плочки, за да създадете палитра. Ако няма раздели, можете да ги покажете от менюто с "Window > 2D -> Tile Palette". Името на палитрата може да бъде всичко, но тук е "MapChipPalette".

Тъй като ще го запазим в папка, създайте нова папка "MapChipPalette" в папката Scene и я уточнете.

Към проекта е добавена папка MapChipPalette.

След това ще добавите MapTips към палитрата. Плъзнете и пуснете разделеното изображение на картата върху палитрата.

MapTips са добавени към палитрата.

Създаване на карта

Оставете настройките за откриване на удари настрана и първо създайте картата. Можете да настроите откриването на удари по-късно. Първо, добавете карта на плочките към вашата йерархия.

След като добавите, изберете Tilemap. Изгледът показва мрежа.

Първо, задайте mapchip, който не се превръща в стена в изгледа.

За момента го положих навсякъде.

След това поставете каменната карта, която ще служи като стена.

Този път нямаше проблем, но ако вашият герой ще бъде зад картата, задайте реда на слоевете на число, по-голямо от Tilemap.

Разбира се, дори и да преместите играта в този момент, ще се промъкнете през стената и ще ходите.

Настройки за откриване на удари в MapChip

От тук ще зададем дали да въведем хит преценка за всеки тип чип на картата. Първо, отворете папката "MapChipPalette", която сте създали, когато сте създали палитрата.

Има maptip, зададен в палитрата вътре, така че първо изберете maptip, по който можете да ходите.

От инспектора задайте стойността на типа на колайдера на Няма. По-късно ще добавите настройка за откриване на сблъсък към Tilemap, но задаването й на "Няма" ще предотврати сблъсъка на този mapchip.

Другата каменна карта е настроена на "Решетка". Тъй като този път не е прозрачен maptip, няма проблем със "спрайт", но ако го настроите на "спрайт", няма да бъде съден, като натиснете прозрачната част на изображението.

Това е всичко, което има за MapTip. Лесно е, защото този път има само два от тях, но ако имате голям брой чипове за карти, трябва да зададете толкова много.

Настройки за откриване на сблъсък

Оттук е почти същото като съдържанието на "Прилагане на откриване на удари с tilemap".

Първо, направете необходимите настройки за откриване на сблъсък на символи. Добавете "Physics 2D -> Circle Collider 2D" като компонент. Този път спрайтът е кръгъл, затова го направих кръг, но моля, изберете Кутия или капсула според формата.

Ще добавим и "Физика 2D -> Rigidbody 2D".

Настройте скалата на гравитацията на 0, за да предотвратите падането на гравитацията. Също така, проверете Z за "Фиксиране на въртенето", за да предотвратите въртенето на спрайта.

За Tilemap добавете компонента Tilemap -> Tilemap Collider 2D.

Можете да видите, че е добавена зелена линия около каменната карта в изгледа. Това означава, че откриването на удари е зададено само за камъни. Можете да видите, че настройката за тип колайдер на върха на картата в палитрата по-горе е отразена.

Опитайте се да стартирате играта и да вървите към стената. Мисля, че можете да се уверите, че героят спира пред стената правилно. Можете да видите, че тя може лесно да се реализира, без да пишете никакви програми, свързани с откриване на удари.

Комбиниране на откриване на удари в MapChip

Както бе споменато в съветите по-долу, когато всъщност го преместите, поведението на откриване на удари в стената е малко странно. Причината и заобиколното решение са описани в съветите по-долу.

Въпреки това, чрез комбиниране на частта за откриване на удари в чипа на картата, странното поведение ще бъде коригирано и натоварването на обработката ще бъде намалено едновременно, така че нека го направим като минимум.

Първо, проверете "Използване в композит" в Tilemap Collider 2D.

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

Ще бъде добавено и "Rigidbody 2D", така че направете "Body Type" на "Static".

След това, мисля, че можете да потвърдите, че ударната преценка на камъка не е за всеки чип на картата и се комбинира.

Сега стартирайте играта и се уверете, че работи правилно.