Как восстановить состояние ragdoll врага после загрузки уровня?

Начинающий
Статус
Оффлайн
Регистрация
8 Ноя 2022
Сообщения
28
Реакции[?]
0
Поинты[?]
0
Добрый день!

Как восстановить состояние анимации или ragdoil врага который уже умер?

Загружаю уровень и выполняю spawn ACharacter, а затем выставляю у него SetActorLocation чтобы переместить его на последнее место где он бегал или умер. Но враг в начале стоит на ногах и только потом у него включается SetAllBodiesSimulatePhysics.
А можно ли как то задать ему позиции всех его костей? Например используя UPoseableMeshComponent?

Пробую сделать Cast из USkeletalMeshComponent, но возвращается пустой указатель.

Код:
UPoseableMeshComponent * mesh = Cast<UPoseableMeshComponent>(GetMesh());
 
Начинающий
Статус
Оффлайн
Регистрация
1 Янв 2021
Сообщения
156
Реакции[?]
14
Поинты[?]
11K
Добрый день!

Как восстановить состояние анимации или ragdoil врага который уже умер?

Загружаю уровень и выполняю spawn ACharacter, а затем выставляю у него SetActorLocation чтобы переместить его на последнее место где он бегал или умер. Но враг в начале стоит на ногах и только потом у него включается SetAllBodiesSimulatePhysics.
А можно ли как то задать ему позиции всех его костей? Например используя UPoseableMeshComponent?

Пробую сделать Cast из USkeletalMeshComponent, но возвращается пустой указатель.

Код:
UPoseableMeshComponent * mesh = Cast<UPoseableMeshComponent>(GetMesh());
Чтобы восстановить состояние ragdoll, можно использовать функцию SetAllBodiesPhysicsBlendWeight или SetAllBodiesSimulatePhysics в зависимости от того, как был настроен персонаж на момент смерти.

Чтобы задать позиции всех костей, можно использовать функцию SetBoneTransforms из UPoseableMeshComponent, передав в нее массив матриц трансформации для каждой кости. Матрицы трансформации могут быть получены из сохранения предыдущего состояния персонажа перед его смертью. Или можно попытаться восстановить позицию костей на основе информации о скелете персонажа и его текущих координатах. Для этого можно использовать функцию GetBoneTransforms из USkeletalMeshComponent.
 
Сверху Снизу