private void Rotate(InputComponent ic, MovementComponent mc) { if (ic.GetInputDirection().magnitude > 0) { Vector3 flatRot = new Vector3(mc.velocity.x, 0f, mc.velocity.z); float dot = Vector3.Dot(flatRot, mc.gameObject.transform.right); mc.GetOwnerGO().transform.Rotate(Vector3.up, dot * mc.turnSpeed); } }