Пятница, 29 Марта 2024, 10:13

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Проблема столкновения в GM 8 (давно хотел спросить...)
Проблема столкновения в GM 8
nekroo98Дата: Вторник, 17 Октября 2017, 15:16 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Вот есть у нас обьект obj. Представим себе, что у него спрайт человечка 50х50 пикселей. И вот получает он урон от недружелюбной неписи. По ряду причин это реализовано созданием точки atk_dot по центру спрайта obj.
И вот у нас есть обьект atk_dot со спрайтом 1х1 пиксель.

У обьекта obj в событии Step исполняется скрипт:
Код
if place_meeting(x,y,atk_dot){hp-=1}

А у обьекта atk_dot исполняется другой скрипт:
Код
в Create:  alarm[0]=1
в alarm[0]=instance_destroy()


В конечном итоге, когда недружелюбная непись бьет нашего персонажа у него отнимается 1 еденица хп.
Все круто, все довольны.

Но вот мы создаем другую непись, или другого персонажа(и тех и тех очень много разных) и обьект obj теперь почему-то напрочь отказывается воспринимать обьект atk_dot, который целый 1 шаг комнаты тычется ему в пузико. При этом, обьекты atk_dot, вызванные другими событиями он видит.

Лечение этого недуга я конечно же нашел, но это секрет.
Да ладно, вот он:
Код
в Create:  alarm[0]=2


И о чудо, теперь обьект obj начал видеть и эту точку, причем только 1 раз, хотя должен успевать провзаимодействовать дважды.
Но тут нас ждет засада, ведь ИНОГДА, раз в год, обьект obj успевает взаимодействовать с ней в течении двух ходов, а потом снова ломается.

Довольно грубо обьяснил, но как есть. Может кто-то знает в чем может быть причина, кроме как положение звезд в небе?
Может лунная активность влияет?...
LunarPixelДата: Вторник, 17 Октября 2017, 16:00 | Сообщение # 2
старожил
Сейчас нет на сайте
Если сильно не вникать, то тут
Цитата nekroo98 ()
У обьекта obj в событии Step исполняется скрипт

Попробуй заменить Step на событие Begin Step.

Банально, проверь порядок вызова событий. Пропиши в Step if (a == 0) {show_message('1'); a = 1;}, а в alarm show_message('2') и погляди, кто раньше выполнится. По идеи, atk_dot удаляется раньше, чем obj проверит столкновение с ним.


nekroo98Дата: Среда, 18 Октября 2017, 09:29 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Специально проверил. В итоге получается следующее:
Точка создается.
Затем проходит проверка столкновения.
Затем точка уничтожается.

В новосозданном примере все работает как часы. Хз, почему не работает в самой игре. Видимо из за гигантского количества говнокода не успевает обработать столкновение, хотя по идее должен...
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Проблема столкновения в GM 8 (давно хотел спросить...)
  • Страница 1 из 1
  • 1
Поиск:

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