Mouse Orbit Zoom Problem

I've modified the MouseOrbit script provided by Unity to zoom in and out using the scroll wheel, although theres a problem. The script has been modified to work on click, and it seems the zoom factor is only applied on click too.

var target : Transform;
private var distance = 10.0;

var xSpeed = 250.0;
var ySpeed = 120.0;

var yMinLimit = -20;
var yMaxLimit = 80;

var distanceMin = 3;
var distanceMax = 25;

private var x = 0.0;
private var y = 0.0;

function Start () {
    var angles = transform.eulerAngles;
    x = angles.y;
    y = angles.x;

    // Make the rigid body not change rotation
    if (rigidbody)
        rigidbody.freezeRotation = true;
}

function Update () {

    distance -= Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime *  Mathf.Abs(distance);
    distance = Mathf.Clamp(distance, distanceMin, distanceMax);

    if (target && Input.GetMouseButton(0)) {
        x += Input.GetAxis("Mouse X") * xSpeed * 0.02;
        y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02;

        y = ClampAngle(y, yMinLimit, yMaxLimit);

        var rotation = Quaternion.Euler(y, x, 0);

        var position = rotation * Vector3(0.0, 0.0, -distance) + target.position;

        transform.rotation = rotation;
        transform.position = position;

        }
    }

static function ClampAngle (angle : float, min : float, max : float) {
    if (angle < -360)
        angle += 360;
    if (angle > 360)
        angle -= 360;
    return Mathf.Clamp (angle, min, max);
    }

Your condition:

if (target && Input.GetMouseButton(0))

only allows the update to happen when the button is down. You need to 'or' ( || ) that with 'or if the wheel moved'. You might want to store the value of the wheel input to make it easier to check that.

if (target && (Input.GetMouseButton(0) || Input.GetAxis("Mouse ScrollWheel")) )

I managed to achieve it by adding the wheel zoom within the if statement first, then follow it with the Mouse Input call.

    if (target && camera) {

   distance -= Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime *  Mathf.Abs(distance);
   distance = Mathf.Clamp(distance, minDistance, maxDistance);

   if(Input.GetMouseButton(0))   {