Unreal Engine 4
http://uengine.ru/forum/

Плавное изменение скорости бега
http://uengine.ru/forum/viewtopic.php?f=19&t=13711
Страница 1 из 2

Автор:  Сидоров Николай [ 22 май 2018, 22:03 ]
Заголовок сообщения:  Плавное изменение скорости бега

Всем привет, в коде не сильно силен, пытаюсь реализовать плавное изменение скорости бега на колесико мыши. Пример, если прокрутить колесо вверх то скорость бега плавно увеличивается, если вниз то уменьшается. Как реализовать плавное изменение значения 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);
   
}

Автор:  Snake [ 22 май 2018, 23:42 ]
Заголовок сообщения: 

при срабатывании изменения скорости, запускаем таймер который через равные промежутки времен(скажем 0,05с - 0,1с, 20-10 срабатываний в секунду) начинает интерполировать значение скорости с текущего до необходимого, по достижению необходимого значения отключаем таймер.

Автор:  Kirov8 [ 23 май 2018, 01:05 ]
Заголовок сообщения: 

Или используем Linterp. В него отправляем текущее значение, требуемое значение, время через getworldDeltaseconds и скорость интерполяции 0.1 + выполняем его по event tick. И вуаля, плавное изменение переменной, притом не зависящая от фреймрейта, т.к. Тик лиш запускает обработку а точку интерполяции оно берёт из мирового.
Подробнее можно на ютубе найти по названию @плавное изменение знаяений@ ue4@

Автор:  Snake [ 23 май 2018, 07:48 ]
Заголовок сообщения: 

event tick слишком часто срабатывает, и работает всегда, я не знаю ни одной задачи которая должна выполняться именно на тике, лучше на нем вообще ничего не делать.(разве что какой-нить мувмент с заданным интервалом тика)

Автор:  Dany [ 23 май 2018, 07:51 ]
Заголовок сообщения: 

Цитата:
я не знаю ни одной задачи которая должна выполняться именно на тике

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

Автор:  Snake [ 23 май 2018, 08:16 ]
Заголовок сообщения: 

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

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

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

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

при 60-90 фпс зачем обновлять значение с такой большой частотой?
тиканье обьектов даже холостое сжирает огромную часть из выделенных на кадр 16мс...
его лучше вообще отключить, и не включать ради интерполяции одного-двух флоатов , больше проиграешь чем выиграешь.
ну может про отсутствие задач на тике я и поспешил ляпнуть - всегда найдется какая-то задача, уж слишком их большое разнообразие.
но нужно довольно серьезное обоснование для использование тика, и тем более для тика с нулевым интервалом.

Автор:  Dany [ 23 май 2018, 08:35 ]
Заголовок сообщения: 

Одно я знаю на верняка...
На Юнити я использую тик для приема евентов клавы и мыши, для AI в том числе и получаю при 200-300 мобах 50-30fps, соответственно.
На Анриале при этих же условиях не больше 25.
Так что я останусь при своих. Тем паче что этот аспект меня вряд ли когда еще будет волновать ))
Сейчас меня больше интересует количество трисов в моих ассетах и оптимизация материалов на них.
Программную же часть оптимизации пусть делает кто другой.
Можно сказать, я перерос программирование, оно мне представляется унылым и однообразным, да еще и геморным ))

Автор:  Dany [ 23 май 2018, 08:39 ]
Заголовок сообщения: 

Чтобы не быть голословным краштест на 400 мобов в юнити на тике


Автор:  Snake [ 23 май 2018, 08:48 ]
Заголовок сообщения: 


Автор:  Dany [ 23 май 2018, 09:05 ]
Заголовок сообщения: 

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

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

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

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/