虚幻引擎5中如何将旋转值转换为FVector类型?
FRotator转FVector实现方法
MainComponent->GetComponentRotation()的返回值是UE内置的FRotator结构体类型,可直接调用自带方法完成转换:
- 如果你需要获取旋转对应的世界空间前方向量,直接调用
Vector()方法即可:
FRotator ComponentRot = MainComponent->GetComponentRotation(); FVector ForwardVec = ComponentRot.Vector();
- 如果你需要将任意本地空间向量通过该旋转映射到世界空间,可以使用
RotateVector方法,比如获取组件的右方向量:
FVector RightVec = ComponentRot.RotateVector(FVector::RightVector);
注意:转换得到的方向向量默认是单位长度,模长为1,可根据需求自行乘以缩放值调整长度。
子组件是否必须使用AddForce()
不是必须的。AddForce()仅用于给开启了物理模拟的组件施加力,通过物理引擎计算驱动组件运动。如果你不需要物理模拟效果,完全可以直接调用SetRelativeLocation/SetWorldLocation、SetRelativeRotation/SetWorldRotation这类方法直接修改子组件的位姿属性。
只有当子组件开启了「模拟物理(Simulate Physics)」选项,且需要物理引擎算力学生成运动效果时,才需要用到AddForce()、AddTorque()这类物理API。
正确获取旋转向量的操作
根据你需要的旋转向量类型,对应操作如下:
- 如果你需要欧拉角格式的旋转向量:将
FRotator的Pitch、Yaw、Roll三个值直接作为FVector的X、Y、Z分量赋值即可:
FRotator ComponentRot = MainComponent->GetComponentRotation(); FVector EulerRotVec = FVector(ComponentRot.Pitch, ComponentRot.Yaw, ComponentRot.Roll);
- 如果你需要轴角格式的旋转向量:也就是旋转轴方向为向量方向,向量模长为旋转弧度值,可先将
FRotator转为四元数再调用转换方法:
FQuat ComponentQuat = MainComponent->GetComponentQuat(); FVector RotationVec = ComponentQuat.ToRotationVector();
内容的提问来源于stack exchange,提问作者mksmptrnk
相关产品推荐
相关产品推荐

