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