Полезное

Мы Вконтакте

Discord канал

#
Пред.
12
Модератор: icms
Аватара пользователя
Пользователь
Сообщения: 149
К примеру перс имеет 5 скилов. Как оптимизировано сделать Cooldawn этих скилов? То есть, если бы были виджеты можно просто в элементе виджета ставить delay и проблем нет, создавая массив из этих элементов. Но если виджет не требуется. Каким типом создавать элемент массива? создавать массив акторов для этого? просто акторы используются при размещении их в сцене, а мне это не нужно. Можно ли это как-то иначе сделать(вся логика пишется в бп компоненте).
Аватара пользователя
Пользователь
Сообщения: 4069
это должен быть массив флоат, содержащий в себе значение задержки для каждого скила, этот массив может быть элементом структуры, также задержка для каждого скила может быть создана в логике с помощью select, тогда можно использовать переменую типа enumeration.
Также желательно использовать таймер, например для того, что бы можно было сохранить текущее время отката скилы, при выходе из игры.
Аватара пользователя
Пользователь
Сообщения: 149
Prytaleks спс, но я не могу понять, как тогда для каждого элемента просчитывать откат одной функцией. Они ведь одновременно и с различными переменными откатываются.
Аватара пользователя
Пользователь
Сообщения: 149
Изображение
Изображение
в фукции Set_Skill_Ready я ставлю set array element на 0. Но на ее инпуте должен быть свой индекс массива скилов, который не получится задавать. Если я правильно понял.
Аватара пользователя
Пользователь
Сообщения: 4069
вот пару вариантов как это должно выглядеть, это может выглядить иначе при работе с структурой.

Изображение
Аватара пользователя
Пользователь
Сообщения: 149
Prytaleks ну с получением этих значений у меня нет (было бы стыдно спрашивать). Проблема в функции которую вызывает таймер. Как в ней задать индекс, функция же вызывается без возможности добавить входное значение (index в данном случае). Получается этот способ не подходит или я ошибаюсь?
Изображение
Аватара пользователя
Пользователь
Сообщения: 4069
у тебя по логике что ты что то хочешь записать в массив, но тебе ведь нужно получить, а не записать.
Аватара пользователя
Пользователь
Сообщения: 149
Задача - при использовании скила начинать обратный отсчет для каждого скила. Запустил 1 потом 2 идут отсчеты одновременно.
Каков алгоритм в принтах?
Аватара пользователя
Пользователь
Сообщения: 4069
да, точно, видимо нужно испльзовать отдельный таймер, или таймлайн, или кривую, или иную логику, для каждого скила отдельно.

Алгоритм здесь может быть весьма разнообразным. Но суть по идее одна - хранить время отката и обрабатывать его, для каждого скила отдельно, тоесть понадобится массив для хранение данных, и массив(или select нода) с данными о максимальном времени для отката, можно еще добавить массив с булевыми переменными которые будут отвечать в кд скил или нет, но это не обязательно.
Сделай структу в которой будет, имя скила(enum), макс время для КД скила(флоат), время текущеее КД(флот), булевая переменная отвечающая что скил в КД, и попробуй поработать с ней.
Также это могут быть и отдельные массивы, если с структурами неудобно, или компонент, с нужными переменными. Массивы в структуре делать в данном случае не нужно, потом всю структуру проще сделать массивом.

Минимальный вариант, это массив с текущем временем(с ним и работать), и селект с параметрами в логике, ну и без основ примитивной математики здесь не обойтись.

p.s. Пяток таймлайнов, и почти ничего выдумывать не нужно, даже массив с макс временем для КД скилов не нужен. Это может быть сразу задано в свойствах таймлайна, также пусть таймлайн сразу возвращает от 0 до 100, где 100 это готовность скила. Это понадобится для анимации КД скила.
Перед выходом из игры получай текущие значения времени таймлайнов, и запускай таймлайн с нужного времени, при входе в игру, если требуется. Если таймлайн работает, значит скил в КД.

Изображение
Аватара пользователя
Пользователь
Сообщения: 149
Prytaleks спс
Цитата:
можно еще добавить массив с булевыми переменными которые будут отвечать в кд скил или нет

в принципе до написания вопроса так и было сделано для каждого скила отдельно, думал можно более оптимизировано сделать.
Без знаний С++ скорее всего не выйдет.


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница