Суббота, 20 Апреля 2024, 02:43

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Возрождение объекта (Как сделать возрождение объектов через определенное время?)
Возрождение объекта
AwdrimДата: Среда, 18 Августа 2021, 11:14 | Сообщение # 1
был не раз
Сейчас нет на сайте
Всем привет :)

Я сделал деревья, которые можно срубить (instance_destroy), поставил их в комнату, но не знаю как сделать их возрождение, пробывал через alarm но что-то не получается.
MagicHeroДата: Среда, 18 Августа 2021, 15:05 | Сообщение # 2
участник
Сейчас нет на сайте
Можно наверное попробовать через списки (list), т.к. заранее не известно сколько нужно учитывать счетчиков. С самими списками в GMS 2 я не работал но делаю для своей игры (на GMS 2) сетевые функции и для этого использую сервер на c# и там уже пришлось использовать списки. После удаления дерева добавляешь к существующему списку новый со счетчиком через которое должно вырасти дерево (также по этому счетчику можно сделать чтобы дерево росло постепенно). И прогоняешь в степе контроллера каждый ход или чтобы не нагружать систему каждый кадр или вообще каждые 100 кадров через for используя в качестве счетчика количество списков (нумерация идет с 0) как только счетчик в каком либо списке доходит до нуля, удаляешь этот список и создаешь дерево.
Если количество деревьев заранее известно и их не такое множество чтобы нагружать систему перебором то можно использовать и простой массив, прогоняя его также и если например значение != 0 то -= 1. Если после этого значение == 0 то создаем дерево. По индексу массива в другом массиве можно например хранить координаты дерева и таким образом оно вырастит на том же месте, плюс так же можно сделать чтобы дерево росло постепенно.


Сообщение отредактировал MagicHero - Среда, 18 Августа 2021, 15:19
CoreДата: Четверг, 19 Августа 2021, 08:03 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
Если твой alarm находится внутри удаляемого дерева, то конечно он не будет работать, так-как объекта уже по факту не существует. Можно попробовать создать отдельный объект, который будет выполнять роль точки для спавна дерева и высчитывать время внутри себя.

AwdrimДата: Четверг, 19 Августа 2021, 10:40 | Сообщение # 4
был не раз
Сейчас нет на сайте
Большое спасибо! :D

Добавлено (19 Августа 2021, 10:56)
---------------------------------------------
Core, вы можете сказать какой именно код нужно писать?

MagicHeroДата: Четверг, 19 Августа 2021, 13:21 | Сообщение # 5
участник
Сейчас нет на сайте
Можно вообще поступить проще, т.к. дерево у тебя изначально отдельный обьект то при его срубке не применяй instance_destroy а просто меняй спрайт на пенек, через alarm запускай режим восстановления (можно чтобы так оно росло постепенно, привязав количество циклов alarm к размеру картинки дерева) и отключай маску столкновения. Это будет самое простое решение.
AwdrimДата: Четверг, 19 Августа 2021, 15:35 | Сообщение # 6
был не раз
Сейчас нет на сайте
MagicHero, у меня за срубленное дерево даётся 1 бревно и 10 xp, но из-за того что дерево не уничтожается, они даются каждый кадр, подскажите что мне делать чтобы этого не было. Также не знаю что делать чтобы отключить маску столкновения. Я новичок в разработке игр, поэтому так много вопросов.
MagicHeroДата: Четверг, 19 Августа 2021, 16:20 | Сообщение # 7
участник
Сейчас нет на сайте
Awdrim, смена маски задается через mask_index=имя спрайта без маски столкновения;

В событии срубки дерева пишешь:

Код
mask_index=sprite;  // где sprite имя спрайта без маски столкновения;
image_index=1;       // картинка пня. Если картинка идет в том же спрайте, номер может быть любым т.к. там может быть несколько картинок с видом деревьев
                    // либо используешь отрисовку спрайта через draw_sprite(x,y,depth,sprite);
alarm[0]=timer;      // где вместо timer указываешь время через которое дерево снова появится.


В alarm[0] пишешь следующее:

Код
mask_index=sprite;  // где sprite имя спрайта дерева c маской столкновения;
image_index=0;       // картинка дерева. либо используешь отрисовку спрайта через draw_sprite(x,y,depth,sprite);


Сообщение отредактировал MagicHero - Четверг, 19 Августа 2021, 16:21
AwdrimДата: Четверг, 19 Августа 2021, 19:00 | Сообщение # 8
был не раз
Сейчас нет на сайте
MagicHero, спасибо что так подробно расписали! Благодарю
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Возрождение объекта (Как сделать возрождение объектов через определенное время?)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг