Герой в игре должен выпускать объект, который движется ОТ игрока и, сталкиваясь с другими объектами, расчищает путь.
Всё бы ничего, но за 2 дня я так и не понял как это сделать :с
Загвоздка в том, что волна должна двигаться ОТ ИГРОКА. Add movement input очень классно определяет world direction, но не имеет в себе скорости передвижения. Add force действительно применяет силу и двигает объект, с одним НО: он двигает объект по x y z, которые заранее прописаны, соответственно ни о каком "от игрока" речи быть не может - это движение чётко по координатам.
Помогите пожалуйста, может есть ноды, которые решат мою проблему, либо же формула, через которую можно будет это настроить
а кто мешает тебе посчитать нужный вектор и его использовать в add force или add impuls
Kemanorel
Вектор то постоянно меняется из-за перемещения игрока. А догадаться до формулы нужной не могу
Это будет что-то в этом роде, можно взять вектор скорости игрока, его массу и применить импульс к тому на что нужно воздействовать
Силу можно вообще произвольную применить, не обязательно брать массу игрока

Итак, доп. проблемы и их решение:
Кроме того, что я не мог привязать движение волны к переду героя, появилась проблема, при которой волна спавнилась ровно из игрока, взаимодействуя с ним
А решение проще некуда. Волна должна выходить из ПЕРЕДА героя в определённой точке - поэтому я поставил эту точку в скелете, который использую. Далее нашёл делаю Get location, get rotation в акторе игрока, а в волне просто напросто добавляю 1 элемент - projectile movement (внимание, движимый блюпринт - actor, при pawn у меня не срабатывала эта же схема). И всё. Буквально.
В таких случаях проще взять getActorLocation игрока и прибавить к ней его getActorForwardVector умноженный на нужную длину (float).
Заморачиваться установкой сокетов имеет смысл в специфических случаях в духе сокета под оружие в руке персонажа, точки на голове для шляпы итд.
Чтобы применить воздействие только к определённым акторам, можно использовать тэги.
SphereTraceForObjects(только у него должна быть длина больше чем ноль, иначе не сработает) получить всех акторов в радиусе и потом forEachLoop перебрать и проверить наличие или отсутствие определённого тэга (actorHasTag)
Так сделай Actor с компонентом Projectile movement, как для стрельбы. Там в компоненте можно отключить гравитацию и настроить скорость и ускорение. Дальше сам)
Тема в архиве.