public void OnMouseDrag()
    {
        if (Input.touchCount > 0)
        {
            if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
            {
                return;
            }
            else
            {
                if (UITouch.getPhase() == 1)
                {
                    var ray     = Camera.main.ScreenPointToRay(Input.touches[0].position);
                    var hitInfo = new RaycastHit();

                    if (Physics.Raycast(ray, out hitInfo))
                    {
                        if (hitInfo.transform.name != transform.name)
                        {
                            return;
                        }
                        var newPos = transform.position;
                        newPos.x           = hitInfo.point.x;
                        newPos.z           = hitInfo.point.z + 0.2f;
                        transform.position = newPos;
                    }
                }
                if (UITouch.getPhase() == 2)
                {
                    var   ray      = Camera.main.ScreenPointToRay(Input.touches[0].position);
                    var   hitInfo  = new RaycastHit();
                    float rotSpeed = 20;
                    if (Physics.Raycast(ray, out hitInfo))
                    {
                        if (hitInfo.transform.name != transform.name)
                        {
                            return;
                        }
                        float rotX = Input.GetAxis("Mouse X") * rotSpeed * Mathf.Deg2Rad;
                        transform.Rotate(Vector3.up, -rotX);
                    }
                }
                if (UITouch.getPhase() == 3)
                {
                    var ray     = Camera.main.ScreenPointToRay(Input.touches[0].position);
                    var hitInfo = new RaycastHit();

                    if (Physics.Raycast(ray, out hitInfo))
                    {
                        if (hitInfo.transform.name != transform.name)
                        {
                            return;
                        }
                        Destroy(hitInfo.transform.gameObject);
                    }
                }
            }
        }
    }