В этой статье будем реализовывать следующее :
Сундук, с неким рандомным количеством содержимого. По клику содержимое вылетает , и вычитается из общего количества в сундуке.
Видов сундуков - три. В каждом свой вид содержимого.
Ну и самое важное — возможность дублирования сундуков с сохранением всей логики без дополнительных правок в коде.
Для примера будут разные цвета сундуков. Синий, золотой и зеленый. Содержимое — сердечки, кувшин, снадобье.
Определять какой цвет и количество бонусов внутри будем при помощи рандома.
Сундук
Основа — спрайт. Под ним ареа2Д с колижен шейпом. Последние для отлова клика.
Ну и лейбл для отображения количества содержимого
Внутренности сундука будут появляться по клику, и пролетев немного вверх пропадать. Можем доставать бонус пока счетчик не будет равен нулю.
Содержимое сундука.
Создадим новую сцену, в которой будет один спрайт у которого мы будем менять текстуру в зависимости от типа сундука.
Так как у нас три типа бонусов , то логично вывести их в массив и подгружать определенную текстуру для спраита уже непосредственно в коде.
Подвесим скрипт на спрайт, опишем массив текстур , и опишем поведение бонуса с момента появления. Т.е полет вверх и удаление.
При запуске этой сцены вы должны увидеть как бонус летит вверх и исчезает.
Переменные:
s_res — массив текстур
life — как долго будет жить бонус в полете
Вернемся в сцену с сундуком, и начнем писать код для него.
Для начала опишем массив текстур для трех типов сундуков.
И добавим еще две переменные :
counter — отвечает за количество бонусов внутри(рандом от 1 до 5)
sp — рандомное число для определения сундука. (0 — синий, 1-золотой,2-зеленый)
В ready генерируем рандомное число для сундука и количества бонусов, пишем в леибл количество бонусов и загружаем соответствующую текстуру в спраит.
В функции input по клику создаем инстанс сцены бонуса. И указываем номер сундука для того чтобы в инстансе загрузилась корректная текстура.
Это делаем через функцию image_changer описанную в сцене бонуса.
Теперь мы можем наклонировать несколько сундуков при помощи Ctrl+D, или через код . И увидим что у каждого сундука свои данные и всё работает как и планировалось.
Каждый раз при старте сцены у нас будут разные сундуки с разным количеством бонусов внутри.