UE4 Blueprints: Корректный AttachToComponent
Предисловие: не претендую на истину в последней инстанции.
Приём, я на связи.
Стояла передо мной задача: крепить Blueprint Class к сокету в SkeletalMesh. Вроде и информации много и уроков. Но вот важные мелочи не называют.
И в итоге этот объект либо коннектится не в той позиции, либо на сцене где он не должен быть, либо вообще пропадает.
Поэтому пишу здесь как решал эту проблему, дабы другие не мучились, а сразу знали в чём беда и как устранить.
Итак, это отдельный объект (Blueprint Actor) со своим компонентами, настройками, коллизией и прочим.
В принципе могу сразу сказать, что беда кроется в физике и в коллизии. Если их не отключить, то ужаса не миновать.
Сначала я спавню объект по классу в нулевых координатах сцены. Без разницы где спавнить, можно и на месте игрока, тогда появляются дополнительные блоки с получением его координат. Не важно!
Сразу после этого создаём блоки для отключения физики и коллизии.
И вот тогда и только тогда можно делать коннект. Хотя если у вас объект не мировой, т.е. без физики и без коллизии, то можно сразу цеплять.
В Target сам полученный Actor из SpawnActor от Return Value. Внимание! В Parent обязательно указываем SkeletalMesh, в котором и есть сокет, если укажите что-то другое (например, Pawn всего персонажа), то сокет просто не будет найден и привязка пролетит мимо. Socket Name соответственно имя сокета.
И о чудо! Теперь всё работает.
Надеюсь помогло не только мне. Теперь можно и за артефактами!
Конец связи.
Комментарий недоступен
Коллизию не обязательно отключать. Физику нужно, потому что компонент со включенной физикой не может быть ни к чему приаттачен. Когда ты делаешь AttachToComponent для актора, в действительности ты делаешь AttachToComponent для его рутового компонента. Если физика включена не на рутовом компоненте, то рут прицепится, но вся иерархия начиная с симулирующего компонента отвалится.
Мило но у меня было похлеще
я хотел сделать отрожение лазерного луча от зеркальных поверхностей
около 6 часов с помошью тригинометрии и синусов делал логику отражения
оказалось есть специальная функкия Mirror
тру стори
По пробуй при помощи LineTrace функции.