Среда, 04 Декабря 2024, 06:04

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Как сделать падающую сосульку?
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,

Потому что в событие уничтожения, каждого последующего сегмента, нужно убирать назначение гравитации на предыдущий - написано же...
  • Страница 1 из 1
  • 1
Поиск:

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