Unreal Engine 4 http://uengine.ru/forum/ |
|
Узнать скорость у Character-а http://uengine.ru/forum/viewtopic.php?f=3&t=14560 |
Страница 1 из 2 |
Автор: | rachok [ 28 авг 2018, 12:19 ] |
Заголовок сообщения: | Узнать скорость у Character-а |
Добрый день! Изменяю положение персонажа (Character Blueprint) с помощью AddActorWorldOffset (через события Input...) и не могу получить скорость через GetVelocity->VectorLength, скорость всегда 0. Попробовал добавить физику на капсулу, при этом заблокировать повороты по осям X и Y - толку 0. При этом в свободном падении скорость появляется. Как можно узнать моментальную скорость Charactera без костылей (вроде ручных замеров пройденного расстояния за последний кадр)? |
Автор: | Snake [ 28 авг 2018, 13:16 ] |
Заголовок сообщения: | |
ничего лучше чем мерять за последний кадр нету... если нужно. но стандартный GetVelocity должен работать, лучше разберись почему не работает , а потом замену если она еще понадобится. |
Автор: | rachok [ 28 авг 2018, 14:06 ] |
Заголовок сообщения: | |
Выдает 0. Если вывести вектор - 0;0;0. И на обычном кубике с включенной физикой тоже... А вот если на него гравитация воздействует, т.е. если предмет/персонажа уронить или толкнуть, то скорость выдается. При простом движении - 0. Это у всех так? Или я что-то не то делаю? |
Автор: | Agny [ 28 авг 2018, 14:09 ] |
Заголовок сообщения: | |
Скорее всего он у тебя не движется,а тупо телепортируется в заданную точку. Для движка он стоит на месте. |
Автор: | rachok [ 28 авг 2018, 14:10 ] |
Заголовок сообщения: | |
Галочка телепорт выключена. П.С. Я для чистоты эксперимента оставил только то, что на картинке. |
Автор: | Snake [ 28 авг 2018, 14:31 ] |
Заголовок сообщения: | |
он все равно телепортируется... он и не должен возвращать скорость при таком движении. скорость при этом, ты задаешь на вход , только так двигать не корректно... потому что за тик он перемещается на 5 юнитов, но тик не одинаковых интервалов, даже если установлен в акторе. нужно задавать скорость константным вектором см за секунду, и добавлять этот вектор умноженный на дельта тайм, на тике. кароче при таком задании движения скорость тебе самому известна, ты ее задаешь. |
Автор: | rachok [ 28 авг 2018, 14:53 ] |
Заголовок сообщения: | |
Да я в курсе, что это за кадр, если делать все верно, то это надо вектор умножить на дельту времени, и уже этот вектор толкать в функцию. Да, я буду задавать скорость, НО я не буду знать реальной скорости объекта, если он, например, еще и падает. Можно вычислить скорость, если каждый тик сравнивать положение тела с положением в предыдущем тике, а затем делить разницу на дельта секондс. Я так и сделал. Но и в этом случае можно вычислить неверно, например персонаж бежит и уперся в стену: из-за небольшого заезда коллайдера на коллайдер возникает маленькое смещение и "скорость" появляется. Причем она близка к той, что я задаю на входе в AddActorWorldOffset . |
Автор: | Prytaleks [ 28 авг 2018, 15:18 ] |
Заголовок сообщения: | |
если бы движение задавалось бы другим способом, get velocity работало бы корректно, а в таком случае да, мерять растояние между кадрами, ну и мб булевую добавить для дополнительной логики. |
Автор: | rachok [ 28 авг 2018, 15:28 ] |
Заголовок сообщения: | |
Другим способом - это импульсом, силой или добавлением линейной физической скорости? Все это работает, если физика включена. Персонажа, мне кажется, так двигать нельзя. |
Автор: | Prytaleks [ 28 авг 2018, 15:40 ] |
Заголовок сообщения: | |
там в любом стандартном ТПС проекте можно посмотреть ноду, также будет работать с такими нодами, как SimleMoveTo и вероятно подобными. Также get velocity можно получить в режиме фаллинг. |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |