Moving objects with mouse button. raycast

I have a script that when the left mouse button is pressed over an object it moves it around the screen. it works fine, the only problem is it moves the terrain if the is clicked just like all the other objects.

is there a way to implement something in the script that tells it to ignore the terrain whens its clicked so it deosnt move it.


this is the script which is attached to the main camera

using UnityEngine;
using System.Collections;

public class MouseDrag : MonoBehaviour
private RaycastHit rayHit;
private GameObject collideObj;
private float distance;
private Vector3 postionObj;

void Start () 


void Update()
    if (Input.GetMouseButton(1)) 
        var ray = camera.ScreenPointToRay(Input.mousePosition);
        var hit = Physics.Raycast(ray.origin, ray.direction, out rayHit);

        if (hit && ! lockObj) 
            collideObj = rayHit.collider.gameObject;
            distance = rayHit.distance; /
            lockObj = true; 
            postionObj = ray.origin + distance * ray.direction; 
            collideObj.transform.position = new Vector3 (postionObj.x, postionObj.y, collideObj.transform.position.z);
            lockObj = false; 



Put the terrain on a layer called “Terrain” and raycast for all layers except the terrain using layermask, i.e.

var hit = Physics.Raycast(ray.origin, ray.direction, out rayHit, Mathf.Infinity,