The goal is to clamp the turret transform so that it can only rotate around the Y axis, providing for horizontal-only turret rotation.
First, my code so far:
In this circumstance, the script is being run from a camera which orbits the turret. The camera is also a child of the turret.
What I am trying to do is cause the turret to transform in such a manner as to point at the same location as is given by the camera.ViewportToWorldPoint function passed from the center of the camera.
The script works a little too well as the turret transform rotates to face the aimpoint on all axes.
I have been looking for a way to clamp the transform so that it can only pivot on the Y axis (horizontal rotation only), however I'm having no success at it. I have tried various combinations of Vector3 and Mathf.Clamp but can't seen to make it work.
It has also occurred to me that I may be able to pass only a particular axis from camera.ViewportToWorldPoint to the variable which then gets passed to Quaternion.FromToRotation, but I have no idea how to do that.
Any help would be greatly appreciated.
NOTE: Edits are to attempt to fix the code not being displayed correctly in the final question.
Can use the same trick to make a person Y-rotate to face the target, but not tilt back/forwards. Adjust the target to be at your height:
answered Mar 10 '12 at 06:44 PM