- Home /
First-person "yaw and pitch" rotation using mouse as if in space.
Good day brave and more adequate, game-programming warriors!
I am but a poor, aspiring programmer and have sought far and wide over the net looking for some answer to my plight! But alas, to no avail. Though before I drown you in sorrow with this melodramatic tale of woe and put your time to waste. I offer a quest to find previously mentioned answer to this ghastly, somber, dreadful, melancholic, regretful, -you get the point- issue! You shall be rewarded with a "thank you" and the great feeling of being altruistic!
I am trying to rotate my character as if in space. All axis, no limit (not rotating a maximum of 90° up or down as in normal FPSs). The yaw and pitch are controlled by the mouse while right-clicking:
if (Input.GetMouseButton (1)) { x += Input.GetAxis ("Mouse X") * 10 * 10 * 0.02f; y -= Input.GetAxis ("Mouse Y") * 10 * 0.02f; Quaternion rotation = Quaternion.Euler (y, x, 0); this.transform.rotation = rotation; }
And the roll is changed with button inputs:
if (Input.GetKey (KeyCode.A)) { Rotator (1); } else if (Input.GetKey (KeyCode.E)) { Rotator (-1); } private void Rotator(int direction){ transform.Rotate (0, 0, 45*direction*Time.deltaTime*0.5f); }
Both rotations work separately, though as soon as I right click the z axis snaps to 0 again. Obviously there is a conflict between the two methods, though I don't know how to solve it. I also wonder, when the rotations eventually function accordingly, that if I try to rotate with the mouse it will use the world axis' and not the the players. For instance: if the player has rolled 90° to the right and then uses the mouse. Then the x and y axis would have switched, no? So moving the mouse left and right will cause the player to change pitch instead of the yaw, right?
I thank you in advance for the help and wish thee safe travels on thine life's winding road! Cheers!
Your answer