Всем привет!
Очень много людей меня мучали этим вопросом «Как сделать магазин для шутера?». Что-ж, пришло время объяснить
Проект состоит из двух Frame’ов. Первый — это собственно сам магазин, где вы покупаете оружие. Во втором Frame’е — сама игра. Здесь находятся персонаж и инвентарь, когда вы покупаете что-либо в магазине оно появляется в инвентаре игрока. Далее вы можете дать оружие персонажу из инвентаря.
Объект Ini используется что бы передавать между Frame’ми информацию о том какое оружие было куплено. А так же сохраняет купленное оружие в инвентаре после закрытие игры, и текущее количество денег игрока.
Первый Frame — cоздание магазина
Первым делом нам нужно создать сами спрайты нашего оружия:
Пистолет:
Дробовик:
Автомат M4A1:
Создаем новый Active и добавляем туда своё оружие в виде отдельных кадров. А так-же добавляем по сторонам по одному невидимому кадру.
Теперь нужно сделать два спрайта, которые будут отвечать за переключение оружия.
Объект кнопки «Buy» (Купить) состоит из двух анимаций: когда оружие доступно для покупки и когда вы его уже купили.
Что бы добавить новую анимацию, нужно нажать ПКМ в левом нижнем окошке с анимациями и нажать на New.
Название можно и не менять. Эта анимация нужна для кнопки, которая будет показывать, что вы купили оружие.
Далее нужно сделать надпись «SOLD» (продано) в отдельном объекте Active
Выбор оружия
Теперь добавляем объект Ini на сцену магазина.
В первом событии при запуске игры, устанавливаем кадр анимации оружия на 1, то-есть это пистолет.
И создаем ini-файл. Appdir$ + «Data» означает, что файл .ini создастся там же, где лежит исходный .exe файл игры под именем Data, которую он сам и создаёт.
Теперь само переключение:
Когда вы нажимаете кнопку влево анимация с оружие переходит на предыдущий кадр, т.е. текущий кадр — 1. Когда нажимаете кнопку вправо к текущему кадру прибавляется единица, что бы перейти к следующему кадру.
Чтобы не перелистывать из стороны в сторону. Создаем еще события перехода от последнего кадра к первому и наоборот:
Далее передаем в счетчик цены за оружие в зависимости от кадра:
Покупка
Для начала нужно дать деньги игроку. Не будем жадничать, дадим игроку сразу 12000 баксов.
Количество денег храниться в переменной Money объекта Ini .
Это условие:
нужно что бы игрок не получал 12000 при каждом запуске игры. Эти 12000 — лишь стартовый баланс игрока.
Что бы избежать ситуации когда игрок открывает игру с нулевым балансом и тут же получает 12000, можно, например, создать правило, что у игрока не может быть меньше одного бакса.
Небольшой нюанс
У объекта Ini нет событие для сравнения значений его переменных. Что бы создать такое событие нужно использовать Compare two general values от объекта Special:
За тем, всегда отображаем деньги игрока в еще одном счетчике
И теперь создаем событие покупки по нажатию на кнопку Buy:
- Текущий кадр магазина говорит о том какое оружие покупает игрок
- далее проверяем есть ли у игрока достаточное количество средств
- и проверяем что это оружие еще не куплено
На каждое оружие заведена отдельная переменная в объекте Ini, в данном случае мы создаем событие для покупки пистолета, ему соответствует переменная Pistol. Если эта переменная равна 0, то значит оружие не куплено, если она равна 1, значит игрок купил данное оружие.
Если условия выполняются:
- присваиваем переменной Pistol единицу
- и отнимаем у игрока сумму денег за покупку
Еще один нюанс
У объекта Ini нет действия «вычесть из», поэтому нужно использовать формулу:
переменная Money = текущее значение переменной Money — 1500
И такие же события создаем для покупки дробовика и автомата:
Надпись Sold
Когда товар куплен, появляется надпись «SOLD», а кнопка «Buy» меняет анимацию:
Если же нет:
Когда игрок закрывает магазин он попадает на второй Frame с персонажем и инвентарем:
Второй Frame — создание оружия у игрока
Для начала нам нужно заготовить спрайты.
Естественно, это будет игрок с нашими оружиями:
Далее создаём для него новые анимации с нарисованными оружиями:
Теперь создаём подобие инвентаря, из которого будем доставать нашу огнестрелку.
Нам будет достаточно тех кадров, которые мы делали для магазина при переключении оружия.
У вас должно получиться что-то вроде такого:
конечно-же добавляем объект Ini на нашу сцену. И привязываем его к ранее созданному файлу Data.ini
Создание инвентаря и его функционала
Теперь нам нужно сделать так, что если у нас какого-то оружия нет, то оно не показывается в нашем инвентаре. И наоборот — отображалось в инвентаре если мы его купили:
Выдача оружия игроку
Если у нас есть данное оружие в инвентаре, то при клике на это оружие, оно должно появляться в руках у персонажа:
Анимация персонажа меняется в соответствии с выбранным оружием.
Теперь можно немного пострелять
На этом всё. Всем удачи, всем пока ;-)
Статья полезная но подобную фигню можно сделать и с объектом «Counter»
не использую INI
Моя страница ВКонтакте, если кто-то хочет связаться —https://vk.com/thegamer881