Реализация обнаружения попаданий для каждого типа MapChip

Страница обновлена :
Дата создания страницы :

Среда верификации

Виндоус
  • Windows 11
Редактор Unity
  • 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. Дополнительные сведения см. в следующих советах:

После настройки нажмите кнопку «Применить», а затем кнопку «Редактор спрайтов».

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

Перейдите на вкладку Палитра плиток, чтобы создать палитру. Если вкладок нет, вы можете отобразить их из меню с помощью «Window > 2D -> Tile Palette». Название палитры может быть любым, но здесь оно «MapChipPalette».

Поскольку мы сохраним его в папке, создайте новую папку «MapChipPalette» в папке Scene и укажите ее.

В проект добавлена папка MapChipPalette.

Далее вы добавите MapTips в палитру. Перетащите разделенное изображение подсказки на палитру.

В палитру добавлены MapTips.

Создание карты

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

После добавления выберите Tilemap. В представлении отображается сетка.

Во-первых, установите чип карты, который не станет стеной в представлении.

До поры до времени я разложил его повсюду.

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

На этот раз проблем не было, но если ваш персонаж будет находиться за картой, установите порядок слоев на число, большее, чем Tilemap.

Конечно, даже если вы переместите игру в этот момент, вы проскользнете сквозь стену и пойдете.

Настройки обнаружения попаданий MapChip

Отсюда мы установим, следует ли вводить оценку попадания для каждого типа чипа карты. Сначала откройте папку «MapChipPalette», которую вы создали при создании палитры.

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

В инспекторе установите для параметра Тип коллайдера значение Нет. Позже вы добавите настройку обнаружения столкновений в Tilemap, но установка для нее значения «Нет» предотвратит столкновение этого картографа.

Другая каменная подсказка карты установлена на «Сетку». Поскольку на этот раз это не прозрачная подсказка, проблем с «спрайтом» нет, но если вы установите его на «спрайт», он не будет оцениваться по попаданию в прозрачную часть изображения.

Это все, что есть в MapTip. Это легко, потому что на этот раз их всего два, но если у вас большое количество фишек карты, вам нужно установить столько.

Настройки обнаружения столкновений

Отсюда это почти то же самое, что и содержание «Реализовать обнаружение попаданий с помощью тайлmap».

Во-первых, выполните необходимые настройки для обнаружения столкновений персонажей. Добавьте «Физика 2D > Кольцевой коллайдер 2D» в качестве компонента. На этот раз спрайт круглый, поэтому я сделал его кругом, но, пожалуйста, выберите коробку или капсулу в соответствии с формой.

Мы также добавим «Физика 2D > Жесткое тело 2D».

Установите шкалу гравитации на 0, чтобы предотвратить падение силы тяжести. Кроме того, отметьте Z для «Исправить вращение», чтобы предотвратить вращение спрайта.

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

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

Попробуйте запустить игру и подойти к стене. Я думаю, вы можете убедиться, что персонаж правильно останавливается перед стеной. Вы можете видеть, что это может быть легко реализовано без написания каких-либо программ, связанных с обнаружением попаданий.

Комбинированное обнаружение попаданий MapChip

Как упоминалось в приведенных ниже советах, когда вы действительно перемещаете его, поведение обнаружения ударов по стене немного странное. Причина и обходной путь описаны в приведенных ниже советах.

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

Во-первых, установите флажок «Использовать в композите» в Tilemap Collider 2D.

В разделе «Добавить компонент» выберите «Физика 2D > Композитный коллайдер 2D».

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

Тогда, я думаю, вы можете подтвердить, что оценка попадания камня не для каждой фишки карты и объединяется.

Теперь запустите игру и убедитесь, что она работает правильно.