| Проблема с унечтожением объекта | 
|  | 
| 
| 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 Сейчас нет на сайте | у меня это просто уже в привычку вошло
   просто приятно думать что то что ты делаешь пойдет на ЛЮБОЙ говно-лепешке(я так планшеты и смартфоны зову)
 
 проект  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. А вообще много вариантов исполнения смерти при столкновении
  Так, что копайся и еще раз копайся. Возможно, найдешь клад =) 
 Ninja Slayer - 2D Physics Puzzle [cancelled]
 
 
 Сообщение отредактировал Abel399 - Суббота, 18 Мая 2013, 10:45 |  |  |  |  |