Полезное

Мы Вконтакте

Discord канал

#
Аватара пользователя
Пользователь
Сообщения: 5
Здравствуйте, мне нужно сделать бота, который в точности будет повторять действия и передвижение персонажа спустя некоторое время. не подскажите как мне лучше это сделать?
как я понял нужно сначала записать в переменные значения вектора персонажа и тд (считывать их каждый тик), а при событии "кнопка Е" например считать эти значения и задать перемещение бота?
я не очень хорошо в таком разбираюсь, и был бы благодарен, если бы кто нибудь помог мне понять что нужно делать и какие функции использовать.
заранее спасибо.
Аватара пользователя
Пользователь
Сообщения: 5
и да, я делаю на блупринтах
Аватара пользователя
Пользователь
Сообщения: 584
Делай проще.
Не каждый тик, это лишнее. Лучше каждое изменение значения вектора положения и ротатора вращения превышающее некий порог.
Допустим перемещение на 1 юнит и поворот на 5 градусов.
Так делается при работе в сети, например. серверу поступает информаци не непрерывно а пакетами, потому чтобы не было рывков сервер использует интерполяцию - Lerp, для сглаживание перемещения и вращения.
И тебе нужно сделать массив структур типа:
srtruct recorder
{
float time
vector3 pos
rotator rotation
}

ну и после просто повторяешь считывание из массива. Временные интервалы есть крайние положения тоже, делаешь интерполяцию и все.
Да, игрок сам пусть записывается в этот массив. Он же получает данные с клавы, сам рассчитывает свое положение в пространстве, так что пусть и запись ведет в нужные периоды времени сам )
Аватара пользователя
Пользователь
Сообщения: 5
OGASodaEx писал(а):
Лучше каждое изменение значения вектора положения и ротатора вращения превышающее некий порог.
Допустим перемещение на 1 юнит и поворот на 5 градусов.

не подскажешь, какое событие нужно использовать что бы записывалось значение при превышении порога? или тут опять же тиком проверять с предидущем значением?
и какими функциями можно осуществить считывание из массива? SetActorTransform не очень хорошо работает) как же тогда задать перемещение и разворот персонажа? и какой функцией задать время перемещения персонажа? я пробовал SetTimerByFunctionName это правильный подход?
Аватара пользователя
Пользователь
Сообщения: 5
очень желательно что бы бот в точности повторял все движения в т.ч. анимацию передвижения и тд
Аватара пользователя
Пользователь
Сообщения: 584
Цитата:
не подскажешь, какое событие нужно использовать что бы записывалось значение при превышении порога? или тут опять же тиком проверять с предидущем значением?

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

Цитата:
и какими функциями можно осуществить считывание из массива?

Массив структур - описал выше. Там нет Transform, там вектор и ротатор.
Просто циклом for() считываешь каждый интервал времени.

Цитата:
и какой функцией задать время перемещения персонажа?

системное время есть. Можешь внутренний таймер сделать свой.

Цитата:
очень желательно что бы бот в точности повторял все движения в т.ч. анимацию передвижения и тд

Отрегулируй пороговые значения и все. На тик у тебя уйдет туча памяти на запись всего этого. К тому же на 90% данные будут пустые в случае простоя игрока.
Аватара пользователя
Пользователь
Сообщения: 2319
обычное решение - запись положения костей скелета в "парент спейс" каждые 1/15 секунды(обычно такое время используется для синхрона сетевой физики) и линейная интерполяция между этими значениями.

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

ну самое простое решение записать последовательность переменных управления анимацией в анимБП. Можно смело использовать этот вариант если вся анимация без реалтайм "солверов"(таких как Икинематика, физика и тд).
_________________
we need to go deeper


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

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