Вторник, 16 Апреля 2024, 15:45

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Проблема с унечтожением объекта
Проблема с унечтожением объекта
fraiДата: Вторник, 14 Мая 2013, 12:39 | Сообщение # 1
частый гость
Сейчас нет на сайте
существует объект который, при столкновении с землёй меняет спрайт после чего он должен уничтожаться. Первые два этапа происходят, а вот с 3 проблемы . Вот пример кода укажите на ошибки пожалуйста.

в create
if sprite_index = spr_exp

alarm[0] = 10

в collision
sprite_index = spr_exp

в alarm[0]
instance_destroy()
zaicev9797Дата: Вторник, 14 Мая 2013, 12:49 | Сообщение # 2
AbRaKaDaBrA
Сейчас нет на сайте
у тебя аларм запускается только при создании обьекта при условии что спрайт будет равен взрыву т.е чтоб он уничтожился нужно чтоб он создался возле стенки и (на стенке) и следовательно поменял спрайт на взрыв и запустил аларм на дестрой

чтоб работало праильно нужно сделать так

криэйт
спрайт=спрайт_игрока

в событии столкновения со стеной (или с чем-то другим)
спрайт = спрайт_взрыва
аларм[0] = длительности взрыва

в событии аларма
дестрой


проект Mysterious Space. The losted moment

Сообщение отредактировал zaicev9797 - Вторник, 14 Мая 2013, 12:51
ГлюкДата: Вторник, 14 Мая 2013, 12:52 | Сообщение # 3
Lampa Studio
Сейчас нет на сайте
В create:

Nothing

В step:
if sprite_index=spr_exp and alarm[0]<1 {
alarm[0]=10
};

В collision:

Как у тебя.

В alarm[0]:

Как у тебя.



Мой проект Drunk West! (заморожен)
https://gcup.ru/forum/9-99264-1

Мой проект Block Destroyer ( В разработке )
https://gcup.ru/forum/9-102818-1#764778
zaicev9797Дата: Вторник, 14 Мая 2013, 12:55 | Сообщение # 4
AbRaKaDaBrA
Сейчас нет на сайте
Цитата (Глюк)
if sprite_index=spr_exp and alarm[0]<1 {
alarm[0]=10
};

это для компа намного тяжелее чем мой вариант т.к ему каждый шаг пока существует обьект игрока проверять чему аларм равен и чему спрайт равен


проект Mysterious Space. The losted moment
ГлюкДата: Вторник, 14 Мая 2013, 13:09 | Сообщение # 5
Lampa Studio
Сейчас нет на сайте
zaicev9797, Ты думаешь он там супер игру делает, где оптимизация важна?


Мой проект Drunk West! (заморожен)
https://gcup.ru/forum/9-99264-1

Мой проект Block Destroyer ( В разработке )
https://gcup.ru/forum/9-102818-1#764778
zaicev9797Дата: Вторник, 14 Мая 2013, 13:14 | Сообщение # 6
AbRaKaDaBrA
Сейчас нет на сайте
Цитата (Глюк)
оптимизация

у меня это просто уже в привычку вошло smile
просто приятно думать что то что ты делаешь пойдет на ЛЮБОЙ говно-лепешке(я так планшеты и смартфоны зову)


проект Mysterious Space. The losted moment

Сообщение отредактировал zaicev9797 - Вторник, 14 Мая 2013, 13:15
fraiДата: Суббота, 18 Мая 2013, 08:52 | Сообщение # 7
частый гость
Сейчас нет на сайте
Не проигрывается скрипт смерти персонажа точнее проигрывается через раз вот пример кода :

if health <= 0
{
alarm[3] = 20
sprite_index = spr_death

}

причём смена спрайта проигрывается всегда а вот аларм проигрывается через раз.
Этот код находится в событии столкновения с объектом, который должен его убить , там же идёт отнимание здоровья.Я пробовал вставлять этот код в степ, но аналогичная проблема .В чём ошибка?
Abel399Дата: Суббота, 18 Мая 2013, 10:45 | Сообщение # 8
Surpass your limits. Right now.
Сейчас нет на сайте
Ошибка в том, что твой персонаж сталкивается с его "смертоносным убийцей" и видимо застревает (событие столкновения проигрывается все время) и из-за этого alarm[3] все время перезаписывается на 20 -> ты никогда не дождешься его выполнения, пока идет столкновение.
Какой вариант решения?
Ну, первое - это можно действовать по примеру Глюка:
Код
if (health <= 0) && (alarm[3]<1)
{      
alarm[3] = 20;
sprite_index = spr_death;
}

Второй способ - это сразу перемещать игрока от его "убийцы" (но это неразумно).
Третий способ - использовать не alarm, а собственный счетчик времени. Использовать его можно различными способами. Пример:
Код
//Create:
death = 0;

//Step
if (death>=20)
{
         //тоже, что и у тебя в alarm'e
}
if (death>0)
{
         death+=1;
}

//Collision with "смертеубийца"
if (health <= 0) && (alarm[3]<1)
{      
         death+=1;
         sprite_index = spr_death;
}


P.S. А вообще много вариантов исполнения смерти при столкновении happy Так, что копайся и еще раз копайся. Возможно, найдешь клад =)


Ninja Slayer - 2D Physics Puzzle [cancelled]

Сообщение отредактировал Abel399 - Суббота, 18 Мая 2013, 10:45
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Проблема с унечтожением объекта
  • Страница 1 из 1
  • 1
Поиск:

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