Возрождение объекта
|
|
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 |
был не раз
Сейчас нет на сайте
| Большое спасибо! Добавлено (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, спасибо что так подробно расписали! Благодарю
|
|
| |