Как сказано в классике "... чтобы что-то продать, сначала надо это что-то купить...".
Аналогичный случай - чтобы собрать монетки, надо сначала сделать монетки, в смысле подготовить их.
Берем все монетки и в порядке любой очередности тащим на Сцену
Настроим монетку GoldCoin.
Сначала присвоим Tag "Gold" путем создания нового тага. Кстати, чтобы потом лишний раз по кнопкам не хлопать, создаем еще два тага Moon и Star
Order in Layer = 1.
Добавляем компонент Circle Collider 2D и в строке is Trigger ставим галочку.
Добавляем Rigidbody2D и в строке Gravity Scale ставим 0, тем самым отключаем гравитацию монетки.
В целом все! Монетка готова к употреблению
Проделаем эти манипуляции с двумя оставшимися монетками, присваиваем им таги согласно их номинала.
Затем все монетки переносим в папку Prefabs и со Сцены удаляем
В папке Prefabs наметился бардак - и мухи и котлеты сразу. Создаем папки BackGround и Money и сортируем котлеты от мух. Вот так правильно!
Игрок готов к сбору, монетки тоже и остается написать скрипт, назовем его TakeCoin
Естественно скрипт создаем в папке Player - это его напрямую касается... И на Player его и вешаем.
Что видим в скрипте?
В первую очередь стоит обратить внимание, что добавлена новая библиотека using UnityEngine.UI; без которой Юнити выдаст ошибку.
Но, что помимо монеток есть еще и статистика, есть звуки. Поэтому готовый скрипт вешаем на Игрока, а настройку скрипта будем производить немного позже
Папка Audio пуста, как карман алкоголика...
Подберите самостоятельно три любых коротких звука где угодно. Подойдет все, что не длиннее одной - двух секунд.
В папке Audio создаем папку Money и туда складываем искомые три звука.
А вот со статистикой придется малость повозиться...
Это и будет темой Части 4 "Статистика игры"
Однако, очень хотелось бы увидеть, как монетки собираются и очки в рабочем поле появляются.
Для этого в скрипте можно временно ликвидировать строки, связанные со статистикой - закомментировать их - - - двойной флеш перед строкой делает строку в скрипте текстовой и в расчет Юнити уже не берется. Это будет очередной урок на сообразительность.
Вот перечень строк, которые надо временно закомментировать:
public GameObject ScoreStat;
Text scoreStatText;
public int st;
scoreStatText = ScoreStat.GetComponent<Text>();
st = 1;
scoreStatText.text = score.ToString();
scoreStatText.text = score.ToString();
scoreStatText.text = score.ToString();
После этой операции скрипт примет вполне себе нормальное состояние и его можно настроить и испытать
Настройка срипта TakeCoin
Score - ничего тут не делаем, это информативная переменная, необходимая
исключительно при отладке игры
ScoreObject - сюда переносим из Иерархии Canvas/Scores/Score
ScoreMax - пока можно оставить например 100. Эта опция нужна для запуска окончания уровня и сейчас не востребована
Все остальные поля - звуки монеток, кидаем звуки из ассетов, папка Audio, и можно испытать процесс!
Так выглядит скрипт со всеми ингредиентами
Уровень должен завершаться так: Игрок набрал указанное количество очков и закрытая до этого дверь открывается.
Займемся дверью.
Тащим на Сцену спрайт закрытой двери, ставим размеры по своему усмотрению, ставим ордер 1, добавляем BoxCollider2D триггерный и таг Door
Затем добавляем пустой объект и делаем его дочерним к двери. Добавляем BoxCollider2D обычный, чуть больше спрайта двери и даем имя DoorNoy - типа дверь закрыта или отсутствует...
Зачем такие трудности? Дверь, пока Игрок не наберет должное количество очков никак не должна реагировать на его приступы прорваться в нее. Это и обеспечивает обычный коллайдер дочернего объекта DoorNoy. Как только очки будут собраны, этот объект будет деактивирован и дверь станет доступной.
Теперь пишем скрипт, который активирует дверь. Для двери их будет несколько, потому в папке Scripts создаем папку Doors и в ней создаем скрипт и назовем DoorOpen
Вешаем готовый скрипт на базовый door1 и настраиваем его переменные
Второй скрипт двери будет отвечать за Остановку времени игры, появление Статистики уровня.
В дверной папке создаем скрипт LevelOut
Из настроек скрипта надо только только внести OutPanel из Канваса.
Ставим на Сцену три разные монетки, запускаем и проверяем...
Типа все ровно - монетка пропадает, очки растут по цене монетки, звук есть, дверь реагирует ровно, время останавливается...
Значит все работает!
Часть 1 "Концепция игры" https://dzen.ru/a/ZGJVMZKsTRJ1IRxW
Часть 2.1 "Поиск и размещение" https://dzen.ru/a/ZGNW53IB3hJhklbs
Часть 2.2 "Настройка игровых элементов" Игрок, Задний фон, Кирпичики, Поле Канваса, Земля, Фон Канваса, Границы игрового поля https://dzen.ru/a/ZGTlEXyZok4KNcEk
Часть 2.3 "Настройка игровых элементов"
Платформы, Кирпичики, Кнопки управления, элементы Канваса https://dzen.ru/a/ZG3owStvrRb4xElN
Часть 3.1 "Игрок - движение и прыжки" https://dzen.ru/a/ZJWHrGZylAw34K1k
Далее Часть 4 "Время, Статистика игры, Дверь" https://dzen.ru/a/ZMotF8kxti_l2c5Q