Полезное

Мы Вконтакте

Discord канал

#
Пред.
12
Аватара пользователя
Пользователь
Сообщения: 1
Всем привет, в коде не сильно силен, пытаюсь реализовать плавное изменение скорости бега на колесико мыши. Пример, если прокрутить колесо вверх то скорость бега плавно увеличивается, если вниз то уменьшается. Как реализовать плавное изменение значения float MouseWeels от 140 до 650 прокручивая колесо мыши?

Код:
// .header
   void MouseUp();
   void MouseDown();
   float MouseWeels;
   
// .cpp
void ALWCharacter::MouseUp()
{
   MouseWeels = RunSpeed + 650;

}
void ALWCharacter::MouseDown()
{
   MouseWeels = RunSpeed - 150;
}

void ALWCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
   Super::SetupPlayerInputComponent(PlayerInputComponent);
   PlayerInputComponent->SetIsReplicated(true);

   check(PlayerInputComponent);

   PlayerInputComponent->BindAction("SpeedUp", IE_Pressed, this, &ALWCharacter::MouseUp);
   PlayerInputComponent->BindAction("SpeedDown", IE_Pressed, this, &ALWCharacter::MouseDown);
   
}
Аватара пользователя
Пользователь
Сообщения: 2319
при срабатывании изменения скорости, запускаем таймер который через равные промежутки времен(скажем 0,05с - 0,1с, 20-10 срабатываний в секунду) начинает интерполировать значение скорости с текущего до необходимого, по достижению необходимого значения отключаем таймер.
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 27
Или используем Linterp. В него отправляем текущее значение, требуемое значение, время через getworldDeltaseconds и скорость интерполяции 0.1 + выполняем его по event tick. И вуаля, плавное изменение переменной, притом не зависящая от фреймрейта, т.к. Тик лиш запускает обработку а точку интерполяции оно берёт из мирового.
Подробнее можно на ютубе найти по названию @плавное изменение знаяений@ ue4@
Аватара пользователя
Пользователь
Сообщения: 2319
event tick слишком часто срабатывает, и работает всегда, я не знаю ни одной задачи которая должна выполняться именно на тике, лучше на нем вообще ничего не делать.(разве что какой-нить мувмент с заданным интервалом тика)
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 237
Цитата:
я не знаю ни одной задачи которая должна выполняться именно на тике

Считывание клавы проходит по тику, мыши, нет?
Я только на тике таким и занимался. Что касается игрока не представляет опасности, бо выполняется единожды за кадр.
Так что тик лично я использовал довольно часто.
На Юнити так это обычное дело. Хотя и там есть возможность запуска таймеров.
Есть разные методики работы с интерполяцией, в том числе и тик.
Аватара пользователя
Пользователь
Сообщения: 2319
на клавиши - делегаты, в анриале уже есть все что нужно для них...
оно уже спроектированно на лоу левеле для оптимального быстродействия.

(как именно я не интересовался, может методом мониторинга состояния переменных, но мне кажется это маловероятным, наверняка используется системный инпут, а значит там целый коплекс: драйвера, хардварные решение и тд.)

и нет смысла прям мониторить инпут на тике после уже реализованной системы.

Цитата:
не представляет опасности, бо выполняется единожды за кадр.

при 60-90 фпс зачем обновлять значение с такой большой частотой?
тиканье обьектов даже холостое сжирает огромную часть из выделенных на кадр 16мс...
его лучше вообще отключить, и не включать ради интерполяции одного-двух флоатов , больше проиграешь чем выиграешь.
ну может про отсутствие задач на тике я и поспешил ляпнуть - всегда найдется какая-то задача, уж слишком их большое разнообразие.
но нужно довольно серьезное обоснование для использование тика, и тем более для тика с нулевым интервалом.
_________________
we need to go deeper
Последний раз редактировалось Snake 23 май 2018, 08:37, всего редактировалось 1 раз.
Аватара пользователя
Пользователь
Сообщения: 237
Одно я знаю на верняка...
На Юнити я использую тик для приема евентов клавы и мыши, для AI в том числе и получаю при 200-300 мобах 50-30fps, соответственно.
На Анриале при этих же условиях не больше 25.
Так что я останусь при своих. Тем паче что этот аспект меня вряд ли когда еще будет волновать ))
Сейчас меня больше интересует количество трисов в моих ассетах и оптимизация материалов на них.
Программную же часть оптимизации пусть делает кто другой.
Можно сказать, я перерос программирование, оно мне представляется унылым и однообразным, да еще и геморным ))
Аватара пользователя
Пользователь
Сообщения: 237
Чтобы не быть голословным краштест на 400 мобов в юнити на тике

Аватара пользователя
Пользователь
Сообщения: 2319

_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 237
Нет, я говорю о довольно длительной истории сравнения анриала и юнити. Я ее веду еще с UDK и Unity 3.
В то время как поклонники анриала утверждали что он круче по картинке.
По AI я стал сравнивать только UE4 и Unity5, а вот раньше я сравнивал оба движка исключительно по картинке и пособработке, то есть то, как движки оптимизированы в части обычной графики еще без физики и AI.
UDK уже тогда начинал отставать от Юнити 3, потом стал сильно сдавать позиции Unity 4, ну а когда Unity 5 вышел, UDK уже точно морально устарел, и UE4 так и не удалось догнать Юнити по производительности даже без физики и AI.

Но, повторюсь, это уже не мои заботы, а тех, кто хочет и дальше делать игры водиночку ))
Удачки )))

ПиСя. И если AI - слабое звено анриала, то на кой он нужен тогда вааще? ))) Что такое игра без AI? Риторический вопрос...


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

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