Download

Rotating an actor relative to the orientation of the camera

I’ve been having some trouble over the last couple of days trying to figure out some way of rotating an actor (using mouse pitch/yaw) relative to the orientation of the player camera.

To describe it simply I’m just trying to rotate the actor as if I’m using AddActorWorldRotation but instead of using world rotation I want to use the camera rotation. I also just want to rotate around the x and y axis so the problem I’m having is mainly due to the x axis orientation changing when I rotate around the y axis.

If I can possibly translate a raw Quaternion from the camera local rotation to the actor local rotation I’ll be able to solve this issue really quickly but I’ve tried a number of ways to achieve that and I haven’t been successful.

Right now the code I have for it is:



 // In Player Class (Pitch)
 inspectedActor->AddActorWorldRotation(*(new FRotator(amount, 0.f, 0.f)), false, nullptr);
 
 // In Player Class (Yaw)
 inspectedActor->AddActorWorldRotation(*(new FRotator(0.f, -amount, 0.f)), false, nullptr);

inspectedActor is the reference to the actor I am rotating.

Rotation is commutative and so you should get the Camera’s rotation, add your desirable rotation to it and set that as the player’s new rotation.