в себе Scene как Root и приаттаченый к ней StaticMeshСomponent. Если я применяю SetWorldLocation непосредственно к статик мешу он перемещается куда нужно, но если я пытаюсь двигать сам Actor через SetActorLocation никакого видимого эффекта не происходит при том, что значение положения актора меняется.
Там Actor Teleport функция должна быть.
Где там? В Аргументах? Там нет функции, там только ENUM, по умолчанию NONE.
https://docs.unrealengine.com/5.3/en-US/API/Runtime/Engine/GameFramework/AActor/TeleportTo/
Я прошу прощения что возвращаюсь к этому, но я выяснил что SetActorLocation не менял положение дочерних обьектов по той причине, что внутри актора я создавал scene типа SceneComponent, делал его RootComponent и все дочерние элементы аттачил к нему. Почему scene компонент мог ломать логику перемещения дочерних объектов? Сам двигался но обьекты внутри оставались на месте.
потому что это scenecomponent и у него другие координаты?+)
А какие именно у него могут быть координаты? Scene создается в конструкторе с помощью CreateDefaultSubobject, дальше она указывается как RootComponent, с помощью того же СreateDefaultSubobject создается StaticMeshComponent. Далее с помощью AttachComponent указывается Scene в качестве родителя для StaticMeshComponent, также указывается KeepRelativeTransform в качестве правила сцепления. Казалось бы вполне однозначная и простая структура Scene как Root для всех дочерних элементов, которые сцепляются по принципу RelativeTransform, если двигается сам актор, значит двигается и Root, а за ним и все остальные...
По-умолчанию трансформ рута = трансформ актора
Обсуждают сегодня