Всем добрый день!
Столкнулся со следующей проблемой
У меня есть механика, работающая пока игрок зажимает кнопку. Т.е. задействовано несколько состояний Enchanced Input.
У меня появилась необходимость вызвать "тело" (содержимое Triggered) этой механики совершенно из другого места. Неважно откуда, главное, что это вызывается не через Triggered, т.е. логика сработает один раз, а не множество тиков.
На этом моменте и возникает проблема в способе запуска куска кода Blueprint'а через обычный Custom Event, но не на одно выполнение, а до ожидания однократного нажатия какой-нибудь кнопки (например LeftMouse). Именно нажатия, вызов происходит не через зажатие этой клавиши.
Я знаю о существовании Event Tick, но стараюсь его избегать (по объективным причинам). В данном случае я понимаю, что мне требуется что-то подобное ему, но в обычном виде он будет запущен всегда, что не особо хорошо, как мне кажется. Возможно я чего-то о нем не знаю, поэтому и прошу помочь.
Bungeen
> Я знаю о существовании Event Tick, но стараюсь его избегать (по объективным причинам).
Обуздай свой первозданный страх перед Event Tick. Делай через него. Если будет лагать - будешь думать как сделать иначе.
Но если будет все еще страшно, то там есть всякие Delay\Timers
Вообще рекомендую придерживаться правила - "если это работает, то это нормально". А проблемы решать если они появятся или ты точно знаешь что будет.
Mephistopheles
> Обуздай свой первозданный страх перед Event Tick
Обуздал.. Точнее попытался.. Нашел я у этого ивента такую штуку как Set Actor Tick Enabled. По сути, она делает то, что мне требуется, а именно отключает и включает Event Tick. Но она работает как-то иначе..
Решил я повесить ту логику (которая мне нужна каждый тик) на этот ивент. Через другой ивент, который вызывается при определенных условиях, в числе которых есть нажатие кнопки (именно нажатие, т.к. было бы зажатие - все проще) я включаю Event Tick, и сперва все работает. Но оно работает пока кнопка была опущена (при этом обнаруживается именно нажатие и прогоняется через Do Once уже на всякий случай, т.к. я не знаю, в чем причина дальнейшего), и стоит мне только ее отпустить, как Event Tick отключается..
Точнее он не отключается полностью, а "частично". Ведь если после этого я нажму на любую кнопку, за которой есть совершенно любое действие (кроме перемещения WASD+Space), то Event Tick включается, а при отпускании - выключается..
Перед этим рассматривал такую штуку как Timer. Она прикольная, но требует ненулевую задержку, а значит пришлось бы мудрить небольшую математику для расчета этой задержки Get World Delta Second / 2, чтоб она была меньше длительности кадра, что мне показалось костыльным.
Но способ "более нормальный" работает вообще не так, как должен..
Поэтому если кто-то знает, какой секрет за Event Tick скрывается, то я бы хотел о нем узнать.
Update:
Все же это я напутал во всем у себя. В итоге работают оба способа.
Mephistopheles спасибо большое за советы!
Тему закрывать пока что не стану, т.к. возможно кто-то знает еще способы реализации подобного
Не так страшен эвент тик как его малюют. Единственное что возможно стоит сделать это ограничить время срабатывания, если логика это допускает что бы не работал слишком часто при условных 300 фпс.
В качестве альтернативы можно таймлайн задействовать хотя смысла мало, т.к. это всего лишь компонент логика которого опять же завязана на эвент тик.
Тема в архиве.
Тема закрыта.