private Vector3 lastPos = Vector3.zero;
 private bool isTouch;
 // Use this for initialization
 void Start () {
 
 }
 
 // Update is called once per frame
 void Update () {
  //判断鼠标是否在点击状态
  if(Input.GetMouseButtonDown (0)){
   isTouch = true;
  } 
  if(Input.GetMouseButtonUp(0)){
   isTouch = false;
   //择鼠标时将lastpos清零
   lastPos = Vector3.zero;
  }
  //在点击状态,物体随鼠标移动
  if(isTouch){
   //参照物屏幕坐标。
   Vector3 screenPos = Camera.main.WorldToScreenPoint(transform.position);
   if(lastPos != Vector3.zero) {
    //拖拽处理
    //一帧内鼠标偏移坐标
    Vector3 offsetPos = Camera.main.ScreenToWorldPoint (new Vector3(Input.mousePosition.x,
                                                                    Input.mousePosition.y,
                                                                    screenPos.z)) - lastPos ;
    transform.position += offsetPos;
   }
   //记录上一帧坐标
   lastPos = Camera.main.ScreenToWorldPoint (new Vector3(Input.mousePosition.x,Input.mousePosition.y,
                                                         screenPos.z)); //转换为世界坐标
    
  }
 }
}
原文:http://www.cnblogs.com/zhuzhuxiaxf/p/4744230.html