Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unity_в_действии_Джозеф_Хокинг_Рус.pdf
Скачиваний:
83
Добавлен:
21.06.2022
Размер:
26.33 Mб
Скачать

198      Глава 8. Добавление в игру интерактивных устройств и элементов

массива, а затем перетащите объекты с вкладки Hierarchy на появившиеся поля. Так как триггер предназначен для управления всего одной дверью, введите значение 1 в поле Size и перетащите объект door на поле Element 0.

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

Это еще один замечательный способ введения интерактивности в игровые уровни! Но триггеры применимы не только к таким устройствам, как двери; с их помощью можно добавить в игру инвентарь.

8.2.3. Сбор разбросанных по игровому уровню элементов

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

Создайте сферу и подвесьте ее примерно на уровне талии персонажа на открытом пространстве сцены. Уменьшите ее размеры, введя в поля Scale значения 0.5, 0.5, 0.5,

востальном установите те же параметры, что и в случае большой зоны триггера. Установите флажок Is Trigger в настройках коллайдера, выберите в настройках слоя вариант Ignore Raycast и создайте новый материал, чтобы присвоить объекту яркий цвет. Из-за малых размеров объекта мы не будем делать его полупрозрачным, поэтому ползунок, отвечающий за альфа-канал, трогать не нужно. Кроме того, в главе 7 упоминались настройки, управляющие отбрасыванием теней; использование теней

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

Теперь создайте новый сценарий с именем CollectibleItem, введите в него код из следующего листинга и присоедините его к сфере.

Листинг 8.8. Сценарий, удаляющий элемент при контакте с персонажем

using UnityEngine;

using System.Collections;

public class CollectibleItem : MonoBehaviour {

[SerializeField] private string itemName; ¬ Введите имя этого элемента на панели Inspector.

void OnTriggerEnter(Collider other) { Debug.Log("Item collected: " + itemName); Destroy(this.gameObject);

}

}

Это очень короткий и простой сценарий. Присвойте элементу значение name, чтобы в сцену можно было поместить несколько элементов. Метод OnTriggerEnter() вызывает исчезновение сферы. При этом на консоль выводится отладочное сообщение, которое мы впоследствии заменим кодом.