在使用 AddActorLocalRotation 函数时,如果想要传入相对旋转参数,常常会遇到旋转不符合预期的问题。
例如,尝试在一个沿着 X 轴朝向的 Actor 上添加相对旋转(0, 90, 0),期望结果是 Actor 顺时针旋转 90 度,但实际上,Actor 会以 Y 轴为中心旋转 90 度,因为相对旋转参数会被转换成全局旋转参数。
为了避免这种问题,可以通过以下方式解决:
1.将相对旋转转换为全局旋转,并使用 AddActorWorldRotation 函数添加旋转。代码示例如下:
FQuat relativeRotation = FRotator(0, 90, 0).Quaternion(); FQuat globalRotation = GetActorRotation().Quaternion() * relativeRotation; AddActorWorldRotation(globalRotation);
2.使用 AddRelativeRotation 函数添加相对旋转。代码示例如下:
FRotator relativeRotation(0, 90, 0); AddRelativeRotation(relativeRotation);
这两种方式都可以实现相对旋转,解决了 AddActorLocalRotation 在 C++ 中的问题。