Как сделать падающую сосульку?
|
|
Sailtor | Дата: Среда, 18 Мая 2016, 21:11 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| У меня есть сосулька, состоящая из 4 элементов(верх, середина 1, середина 2 и низ). Как мне сделать так, что бы при уничтожении определённого сегмента падали все нижние сегменты, а верхние оставались висеть?
|
|
| |
Granner | Дата: Четверг, 19 Мая 2016, 09:49 | Сообщение # 2 |
почетный гость
Сейчас нет на сайте
| Возможно, есть такой вариант (алгоритмически, без кода): 1. При уничтожении сегмента ищем ближайший сегмент сверху, с координатами -y. Если он есть, меняем ему спрайт на спрайт с изломом (чтобы покрасивее было). 2. При этом же создаем невидимый объект высотой с сосульку, чьи координаты и размер позволяют перекрыть сегменты, находящиеся ниже уничтожаемого. Время существования этого объекта (аларм) - 1 тик шага. 3. В событии столкновения любого сегмента с этим невидимым объектом нужно заложить движение вниз. При достижении пределов комнаты уничтожаем сегмент и добавляем блекджек, разбрызгивающиеся лужи или нечто подобное.
Лучше - быть, чем - казаться. P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
|
|
| |
Minskii | Дата: Четверг, 19 Мая 2016, 09:53 | Сообщение # 3 |
участник
Сейчас нет на сайте
| Каждый элемент должен зависеть от вехрнего элемента.Пример Если уничтожен элемент_1 Элемент_2 получает гравитацию
Если элемент_2 находится не на месте Элемент_3 получит гравитацию
И так по цепочке. Ну или кейсы. если уничтожили элемент_1,выбирается кейс 1 В кейсе 1,прописано мол падают 3 элемента
Один терранозавр - это 1024 гиганозавра, или 1048576 меганозавров. Java/Kotlin, C#, C++. Android разработчик. Инженер-программист программного обеспечения информационной безопасности мобильных систем.
|
|
| |
Syank | Дата: Вторник, 31 Мая 2016, 08:35 | Сообщение # 4 |
участник
Сейчас нет на сайте
| Нужно создать четыре объекта на каждый сегмент сосульки: s_seg_1, s_seg_2, s_seg_3, s_seg_4 Верхний разумеется будет ведущим =) Далее в событие создания s_seg_1 прописываем что то на подобии:
Код s2 = instance_create(x+положение сегмента относительно главного сегмента, y,s_seg_2); s3 = instance_create(x+положение сегмента относительно главного сегмента, y,s_seg_3) s4 = instance_create(x+положение сегмента относительно главного сегмента, y,s_seg_4); Далее у событие уничтожения каждого сегмента начиная с первого
Код s2.gravity = 2 s3.gravity = 2 s4.gravity = 2; //это то, что должно случится с сегментами ниже, при уничтожении верхнего В зависимости от положения сегмента, убираем s2, s3 или s4 из кода. Должно работать... наверное.
Сообщение отредактировал Syank - Вторник, 31 Мая 2016, 08:44 |
|
| |
Minskii | Дата: Вторник, 31 Мая 2016, 09:26 | Сообщение # 5 |
участник
Сейчас нет на сайте
| Если убить один сегмент,все попадают Syank, Добавлено (31 мая 2016, 09:23) --------------------------------------------- Ему не одна нужна сусулька [b ]Syank[/b], Добавлено (31 мая 2016, 09:26) --------------------------------------------- Ему не одна нужна сусулька [b ]Syank[/b],
Один терранозавр - это 1024 гиганозавра, или 1048576 меганозавров. Java/Kotlin, C#, C++. Android разработчик. Инженер-программист программного обеспечения информационной безопасности мобильных систем.
|
|
| |
Интернет | Дата: Вторник, 31 Мая 2016, 12:04 | Сообщение # 6 |
постоянный участник
Сейчас нет на сайте
| А может лучше использовать словарь ??
Код global.slow=ds_map_create() //В создании каждого сегмента
Код ds_map_add(global.slow,id,id) //Ключом и значением служит id сегмента //Дальше суть такая, при уничтожении сегмента проверяем его ключ и все остальные сегменты с меньшим ключом и значением удаляем либо делаем, что нужно. Ну и конечно словарь нужно поместить в список, чтобы уничтожалась только сосулька с которой взаимодействуют, а не все на карте. И так же не забудь удалять список и очищать словарь при уничтожении всей сосульки.
Сообщение отредактировал Интернет - Вторник, 31 Мая 2016, 12:22 |
|
| |
Minskii | Дата: Вторник, 31 Мая 2016, 12:33 | Сообщение # 7 |
участник
Сейчас нет на сайте
| Интернет, А вот это правильная мысль!
Один терранозавр - это 1024 гиганозавра, или 1048576 меганозавров. Java/Kotlin, C#, C++. Android разработчик. Инженер-программист программного обеспечения информационной безопасности мобильных систем.
|
|
| |
TLT | Дата: Вторник, 31 Мая 2016, 13:34 | Сообщение # 8 |
Сейчас нет на сайте
| Можно сделать невидимый триггер.
Дао, выраженное словами, не есть истинное Дао.
|
|
| |
Syank | Дата: Вторник, 31 Мая 2016, 19:14 | Сообщение # 9 |
участник
Сейчас нет на сайте
| Цитата Minskii ( ) Если убить один сегмент,все попадают Syank, Потому что в событие уничтожения, каждого последующего сегмента, нужно убирать назначение гравитации на предыдущий - написано же...
|
|
| |