USkeletalMeshComponent中没有SetBoneTransform
时间: 2024-02-24 10:58:20 浏览: 85
非常抱歉,我的回答仍然有误。在UE5的C++ API中,确实没有USkeletalMeshComponent中的SetBoneTransform方法。正确的做法是使用USkeletalMeshComponent的GetBoneTransform方法获取当前骨骼的变换,然后通过FTransform的SetRotation和SetTranslation等方法来修改骨骼的旋转、平移和缩放等信息,最后再使用USkeletalMeshComponent的SetBoneTransform方法来更新骨骼的变换。
以下是示例代码:
```cpp
USkeletalMeshComponent* SkeletalMeshComponent; // 骨骼网格组件
int32 BoneIndex; // 骨骼索引
FTransform NewTransform; // 新的变换值
// 获取当前骨骼的transform
FTransform BoneTransform = SkeletalMeshComponent->GetBoneTransform(BoneIndex, EBoneSpaces::WorldSpace);
// 修改transform的旋转、平移和缩放信息
BoneTransform.SetRotation(NewTransform.GetRotation());
BoneTransform.SetTranslation(NewTransform.GetTranslation());
BoneTransform.SetScale3D(NewTransform.GetScale3D());
// 更新骨骼的transform
SkeletalMeshComponent->SetBoneTransform(BoneIndex, BoneTransform, EBoneSpaces::WorldSpace);
```
其中,EBoneSpaces::WorldSpace表示使用世界坐标系进行变换。如果需要使用父骨骼的坐标系进行变换,可以使用EBoneSpaces::ParentBoneSpace。
阅读全文