Answers for ""Perfect" Free Rotation Method? (like Blender)" The latest answers for the question ""Perfect" Free Rotation Method? (like Blender)" Answer by Owen-Reynolds I'm thinking the problem is diagonal motion. If I drag the mouse from lower-right to upper-left, it looks like (and makes sense) Blender is spinning the object around a (/)-looking axis (perpendicular to my motion.) Rotating my hand, 90 degrees on x then 90 degrees global y (or local y) doesn't give the same effect. So, maybe use `transform.RotateAround` whenever you have X and Y motion together (the around line would be something like (-Y,X).) Also, you're going to get incremental errors if you always rotate from last frame -- all those little turns added up can drift the final result. A trick is to save the mouseDown spot, and each movement recompute from current pos to saved start pos. Thu, 08 Mar 2012 21:06:10 GMT Owen-Reynolds Answer by apocriva What you probably want is something like this (disclaimer: I don't generally use JavaScript, and haven't actually tried this code snippet live!): var speed : float = 550.0; var rotations : Vector3; function Update() { if (Input.GetMouseButton(0)) { rotations.x = -Input.GetAxis("Mouse X") * Time.deltaTime * speed; rotations.y = Input.GetAxis("Mouse Y") * Time.deltaTime * speed; transform.localEulerAngles = rotations; } } You might have to do some kind of normalization or something, but the key is to have the rotations around the individual axes driven directly by the translation of the mouse (if that makes sense :)). Thu, 08 Mar 2012 19:47:45 GMT apocriva