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/