- Home /
Rotate up when key press and rotate down on release
Hi there,
I'm new on Unity 3d. I wrote a keyboard script like mouse look script for first person character - of course with some help - and it works great . I mean i can freely look up,down,left and right when i press keys I attached. My problem is I want my character look 30 degrees up during pressing the "q" key. And when I release the key I want my character look at the original rotation. I tried some methods Quaternion.LookAt, transform.Rotate but couldn't succeed. I'd be happy if someone can help me. Thanks.
Answer by aldonaletto · Oct 23, 2011 at 02:41 AM
You can use a coroutine to do the job. Call the function LookUp below when "q" is pressed, and the camera automatically will go up 30 degrees and stay there while the hey is pressed. When the key is released, the camera returns to the original rotation.
You can add the script below to your camera, or add this code to the script you already had:
var duration: float = 0.5; // duration in seconds private var lookingUp = false;
function LookUp(){ if (lookingUp) return; // aborts if already looking up lookingUp = true; // flag indicates it's looking up var start = transform.localRotation; // save the start rotation... var dest = Quaternion.Euler(-30, 0, 0) * start; // and calculate the destination var t: float = 0; while (t = 0){ t -= Time.deltaTime/duration; // t go back to 0 a little step each frame transform.localRotation = Quaternion.Slerp(start, dest, t); // rotate this little yield; // return here next frame } lookingUp = false; // rotation ended }
function Update(){ if (Input.GetKeyDown("q")){ LookUp(); } }