Как работает distance (object.x, object.y....)?

техническая поддержка по Construct 2

Сообщение Как работает distance (object.x, object.y....)?
» 03 авг 2020, 12:39

Всем привет!
В данный момент я столкнулся с тем, что слишком большое количество объектов с различными поведениями и кучей коллизий крайне негативно сказываются на работоспособности проекта. Пришло время оптимизации и я ищу способ сделать следующее.
В прикрепленном исходнике есть объект Player (квадрат наверху с поведением drag and drop) и несколько объектов с поведением platform и таймером, по которому они прыгают. Выглядит это чудо так:

Изображение

Моя цель - заставить эти объекты прекращать движение, когда объект player удален от них на достаточное расстояние. Я хочу отключить им поведение platform и так же выключить коллизии.
Для этого я пытаюсь копать в сторону distance и сделал вот так:

Изображение

И тут я явно чего-то не понимаю.
Работает это событие крайне странно - дистанция рассчитывается только между первой копией спрайта, и при приближении/отдалении именно от него что-то происходит: если мы далеко от первого спрайта, останавливаются все спрайты. Если мы близко к первому спрайту, включаются все спрайты.

Изображение

Как это работает и как с делать так, чтобы каждый спрайт при использовании distance вел себя индивидуально?
Прикпреляю исходник:
distance.capx
(173.56 КБ) Скачиваний: 44

Буду крайне признателен тому, кто поможет! Все делается для Fearmonium: viewtopic.php?f=20&t=15205&p=148629#p148629
Изображение
Аватара пользователя

Игродел
Сообщений: 358
Я тут с 30 июл 2014
VK: vk.com/rbspade
Репутация 46 [ ? ]

Сообщение Как работает distance (object.x, object.y....)?
» 03 авг 2020, 12:58

?
distance2.capx
(173.67 КБ) Скачиваний: 56
Исходники:
Библиотека исходников для Construct Classic - http://c2community.ru/forum/viewtopic.php?f=16&t=16843

Плагины:
Портирование плагины [C3Runtime] - http://c2community.ru/forum/viewtopic.php?f=200&t=17021
Поддельные плагины [C3Runtime] - http://c2community.ru/forum/viewtopic.php?f=200&t=16933
Аватара пользователя

Участник
Сообщений: 692
Я тут с 12 мар 2020
Откуда: GameSoul Inc.
Двиг: Construct,Unity
Лицензия: Business
Репутация 111 [ ? ]

Сообщение Как работает distance (object.x, object.y....)?
» 03 авг 2020, 14:35

Siava_Gris, dictance() (а точнее System - Compare) не берет подходящий по условию объект в действия. По этому действие происходит для всех сразу. Решение: добавить For each и вместо Trigger once проверку включенного поведения Is enable (в первом событии с инверсией).
GameSoul, твоё решение не смотрел (с телефона), извини если продублировал текстом.
Аватара пользователя

Модератор
Сообщений: 4691
Я тут с 18 сен 2015
Откуда: Екатеринбург
Двиг: С2/С3
Лицензия: Personal
Репутация 682 [ ? ]

Сообщение Как работает distance (object.x, object.y....)?
» 03 авг 2020, 16:01

Я использовал For Each и все заработало. Всем спасибо!
Изображение
Аватара пользователя

Игродел
Сообщений: 358
Я тут с 30 июл 2014
VK: vk.com/rbspade
Репутация 46 [ ? ]

Сообщение Как работает distance (object.x, object.y....)?
» 03 авг 2020, 21:39

Для прыгающих персонажей поведение не нужно. Прыжок - это два-три события.
http://c2community.ru/forum/viewtopic.php?f=17&t=15009

Отключение не освободит память и не освободит стек процессора. Для любой библиотеки, у которой есть возможность мгновенной активации, ресурсы резервируются. Оптимизация отключением - такое себе решение.. снимание пены в переполненной ёмкости.
Для этой мелочи лучше делать механику в листе с отключаемыми группами. Platform - прожорливая штука.
Аватара пользователя

Игродел
Сообщений: 1294
Я тут с 31 май 2017
Репутация 250 [ ? ]

Сообщение Как работает distance (object.x, object.y....)?
» 03 авг 2020, 23:17

repkino писал(а):Для прыгающих персонажей поведение не нужно. Прыжок - это два-три события.
viewtopic.php?f=17&t=15009

Отключение не освободит память и не освободит стек процессора. Для любой библиотеки, у которой есть возможность мгновенной активации, ресурсы резервируются. Оптимизация отключением - такое себе решение.. снимание пены в переполненной ёмкости.
Для этой мелочи лучше делать механику в листе с отключаемыми группами. Platform - прожорливая штука.


Поведение платформ и простой прыжок - это просто пример в данном случае. На мобах достаточно много поведений висит, и их отключение дало-таки свои плоды. Отключение групп в данном случае мне не поможет - что если один из мобов сейчас на экране, перед игроком, а другой где-то далеко? Отключение группы вырубит их обоих
Изображение
Аватара пользователя

Игродел
Сообщений: 358
Я тут с 30 июл 2014
VK: vk.com/rbspade
Репутация 46 [ ? ]



Вернуться в Вопрос-Ответ по Construct 2

Сейчас эту тему просматривают

Зарегистрированные пользователи: нет зарегистрированных пользователей

Наверх