Complicated Rotation Issue

Hello everyone,

This is my first post on the forums and probably will not be my last :). I have run into something of a roadblock in my code.

What I’m trying to do is to get the player’s upper body to face the “CursorWorldPosition” which I have obtained using a RaycastHit from the Camera to the mouse position. The solution works perfectly, the player aims exactly at the mouse and that is where the bullet goes.

The problem occurs when I try to modify the value of the player’s rotation. I want it only to rotate on a fixed vertical axis. I have tried numerous things here including localRotation, localEulerAngles, EulerAngles, transform.rotation.eulerAngles. And nothing seems to be working, rotation is always off and I can never quite get the exact vertical axis that it is rotating on.

Figuring this axis out would really help as I also need to set a Mathf.Clamp on it to ensure that the player cannot shoot himself :).

Here is the segment of code I am currently working with. (Please let me know if you would like me to expand)

		Quaternion Focus = Quaternion.LookRotation(hit.point - transform.position);

	    transform.rotation = Quaternion.Slerp(transform.rotation, Focus, 100);

This is pretty much just the basic “Look at object” script, but I can’t seem to figure out how to modify it on only a vertical axis.

I would appreciate any help I can get. Thank you.

McMayhem

It sounds as if you want to rotate, and then make some additional rotation on top of that. This means the Quaternions need to be multiplied:

transform.rotation = Quaternion.LookRotation(hit.point - transform.position) * Quaternion.Slerp(transform.rotation, Focus, 100);