- Home /
Transform.Rotate not stopping?
When I'm rotating my spaceship with this script, it keeps rotating when I don't want it to.
var turnSpeed = 15.0;
function Update () { transform.Rotate(Vector3.forward, Input.GetAxis("Horizontal") turnSpeed, Space.Self); transform.Rotate(Vector3.right, Input.GetAxis("Vertical") turnSpeed, Space.Self); }
I want the spaceship to stop turning right when I don't press "d". Is there anything that might help in my script?
If by 'keeps rotating' you mean that it gradually comes to a stop when you release the control rather than stopping immediately, it may be due to the 'gravity' setting for that control in the input manager. (I don't use the input manager that much, but I think to get the effect you're looking for you'd want to raise the gravity setting to relatively high value, e.g. 1000.)
Answer by Eric5h5 · Dec 16, 2010 at 02:32 AM
That code is framerate-dependent; you need to multiply input by Time.deltaTime. There's nothing that would make it keep rotating though. Maybe you have a joystick connected that needs calibrating.
I'm using a keyboard but yeah, I should probably put it in FixedUpdate(). but after I press and release the button, it keeps slowly moving. I want it to stop once I'm not pressing the button.
You should not put it in FixedUpdate, which is only for physics. Update is correct, but you really need to multiply input by Time.deltaTime as I said. Also as I said, it does stop once you're not pressing the button. Check the gravity/sensitivity in the input manager settings, and disconnect any joysticks/gamepads you might have.
Thank you. I didn't have a rigidbody for my ship, which now solves most of the problem; I just need to do some tweaking. I didn't listen to your advice at first, and I apologize.
Your answer
Follow this Question
Related Questions
Scale gameObject 1 Answer
How to prevent Z axis rotation ? 1 Answer
Why does this script work correctly? 1 Answer
Drag object in a circle path 1 Answer
Rotation-Trouble 4 Answers