/// <summary>
    /// Resets the position.将父对象和子对象的trasform复原
    /// </summary>
    /// <param name="tra">Tra.</param>
    public void ResetParentAndChild()
    {
        parentSAR.isCollider     = false;
        parentSAR.enabled        = false;
        gameController.lastTrans = null;
        for (int i = 0; i < childTween.Length; i++)
        {
            if (childTween [i].GetComponent <ScaleAndRotate> () != null)
            {
                ScaleAndRotate tarSAR = childTween [i].GetComponent <ScaleAndRotate> ();
                tarSAR.isCollider   = true;
                tarSAR.isRoteteSelf = false;
                tarSAR.isDragMove   = false;
                //将子物体缩放旋转归为
                tarSAR.transform.DOScale(new Vector3(1, 1, 1), 0.1f);
                tarSAR.transform.DOLocalRotate(new Vector3(0, 0, 0), 0.1f);
            }
            childTween [i].GetComponent <BoxCollider> ().enabled = false;
            childTween [i].DOPlayBackwards();
            //这个很重要
        }
        Transform tra = parentSAR.transform;

        //然后将父物体归为
        tra.DOScale(new Vector3(0.15f, 0.15f, 0.1f), 0.1f).SetDelay(0.1f);
        tra.DOLocalRotate(new Vector3(0, 0, 0), 0.1f).SetDelay(0.1f);
        tra.DOLocalMove(new Vector3(0, 0.056f, 0), 0.1f).SetDelay(0.2f);
    }
    public void OnButtonReleased(VirtualButtonAbstractBehaviour vb)
    {
        switch (vb.VirtualButtonName)
        {
        case "split":
            //....
            vb.GetComponent <Renderer>().material.color = Color.white;
//			Debug.Log ("split...released");
            ResetParentAndChild();
            parentSAR.isCollider = true;
            parentSAR.enabled    = false;
            parentSAR.GetComponent <CollierController> ().childTag.Clear();
            for (int i = 0; i < childTween.Length; i++)
            {
                //这个很重要
                if (childTween [i].GetComponent <ScaleAndRotate> () != null)
                {
                    ScaleAndRotate tarSAR = childTween [i].GetComponent <ScaleAndRotate> ();
                    //将子物体缩放旋转归为
                    tarSAR.transform.DOScale(new Vector3(1, 1, 1), 0.1f);
                    tarSAR.transform.DOLocalRotate(new Vector3(0, 0, 0), 0.1f);
                }
            }
            Transform tra = parentSAR.transform;
            //然后将父物体归为
            tra.DOScale(new Vector3(0.15f, 0.15f, 0.1f), 0.1f);
            tra.DOLocalRotate(new Vector3(0, 0, 0), 0.1f);
            tra.DOLocalMove(new Vector3(0, 0.056f, 0), 0.1f);

            for (int i = 0; i < childTween.Length; i++)
            {
                ScaleAndRotate tarSAR = childTween [i].GetComponent <ScaleAndRotate> ();
                tarSAR.enabled    = true;
                tarSAR.isCollider = false;
                tarSAR.isDragMove = false;
                childTween [i].DOPlayForward();
            }
            StartCoroutine(MoveLater());
            //....
            break;

        case "combin":
            //..
            vb.GetComponent <Renderer>().material.color = Color.white;
            gameController.lastTrans = null;
//			Debug.Log ("combin...released");
            ResetParentAndChild();
            //...
            break;

        default:
            //..
            break;
        }
    }
    /// <summary>
    /// Inits the load object.初始化网络加载出来的模型
    /// </summary>
    public void InitLoadObj(string name)
    {
        GameObject model;

        if (loadObj.TryGetValue(name, out model))
        {
            GameObject parentImageTarget = GameObject.FindGameObjectWithTag(name);
            GameObject tarObj            = Instantiate <GameObject>(model, new Vector3(0, -72, 0), Quaternion.identity, parentImageTarget.transform);
            tarObj.AddComponent <SetRenderQueue> ();
            tarObj.AddComponent <ResetModel> ();
            tarObj.transform.localScale *= 0.2f;
            Renderer[] renders = tarObj.GetComponentsInChildren <Renderer> ();
            for (int i = 0; i < renders.Length; i++)
            {
                renders [i].material = mat;
            }
            ScaleAndRotate rotateSpt = tarObj.AddComponent <ScaleAndRotate> ();
            rotateSpt.isDragMove   = false;
            rotateSpt.isRoteteSelf = true;
            tarObj.transform.DOLocalMoveY(0.18f, 8).SetDelay(2);
            tarObj.layer = LayerMask.NameToLayer("target");
        }
    }
 /// <summary>
 /// Plaies the ani.根据tag创建对应的动画
 /// </summary>
 /// <param name="tarCl">Tar cl.</param>
 void PlayAni(Collider tarCl)
 {
     if (GameObject.FindGameObjectWithTag(tarCl.tag) != null)
     {
         //将lastTrasn之为null
         gameController.lastTrans = null;
         if (RuntimePlatform.Android == Application.platform)
         {
             if (Input.GetTouch(0).phase == TouchPhase.Stationary)
             {
                 if (tarCl.GetComponent <ScaleAndRotate> () != null)
                 {
                     ScaleAndRotate tarSAR = tarCl.GetComponent <ScaleAndRotate> ();
                     if (tarCl.tag == "group1_zhijia_r")
                     {
                         //恢复旋转和位置,因为相同,所以设置一个方法
                         ResetSR(tarCl.transform);
                         tarCl.transform.DOLocalMove(new Vector3(0.3f, 0.08f, 0), 1);
                         tarSAR.isCollider   = true;
                         tarSAR.isRoteteSelf = false;
                         tarCl.enabled       = false;
                         if (!childTag.Contains(tarCl.tag))
                         {
                             childTag.Add(tarCl.tag);
                         }
                     }
                     if (tarCl.tag == "group1_zhijia_l")
                     {
                         //恢复旋转和位置,因为相同,所以设置一个方法
                         ResetSR(tarCl.transform);
                         tarCl.transform.DOLocalMove(new Vector3(-0.3f, 0.08f, 0), 1);
                         tarSAR.isCollider   = true;
                         tarSAR.isRoteteSelf = false;
                         tarCl.enabled       = false;
                         if (!childTag.Contains(tarCl.tag))
                         {
                             childTag.Add(tarCl.tag);
                         }
                     }
                     if (tarCl.tag == "group1_zhuanlun")
                     {
                         //恢复旋转和位置,因为相同,所以设置一个方法
                         ResetSR(tarCl.transform);
                         tarCl.transform.DOLocalMove(new Vector3(0.015f, 0.82f, 0), 1);
                         tarSAR.isCollider   = true;
                         tarSAR.isRoteteSelf = false;
                         tarCl.enabled       = false;
                         if (!childTag.Contains(tarCl.tag))
                         {
                             childTag.Add(tarCl.tag);
                         }
                     }
                     if (tarCl.tag == "group1_dingzi")
                     {
                         //恢复旋转和位置,因为相同,所以设置一个方法
                         ResetSR(tarCl.transform);
                         tarCl.transform.DOLocalMove(new Vector3(0, 0, 0), 1);
                         tarSAR.isCollider   = true;
                         tarSAR.isRoteteSelf = false;
                         tarCl.enabled       = false;
                         if (!childTag.Contains(tarCl.tag))
                         {
                             childTag.Add(tarCl.tag);
                         }
                     }
                 }
             }
         }
         if (RuntimePlatform.WindowsEditor == Application.platform)
         {
             if (Input.GetMouseButtonUp(0))
             {
                 if (tarCl.GetComponent <ScaleAndRotate> () != null)
                 {
                     ScaleAndRotate tarSAR = tarCl.GetComponent <ScaleAndRotate> ();
                     if (tarCl.tag == "group1_zhijia_r")
                     {
                         //恢复旋转和位置,因为相同,所以设置一个方法
                         ResetSR(tarCl.transform);
                         tarCl.transform.DOLocalMove(new Vector3(0.3f, 0.08f, 0), 1);
                         tarSAR.isCollider   = true;
                         tarSAR.isRoteteSelf = false;
                         tarCl.enabled       = false;
                         if (!childTag.Contains(tarCl.tag))
                         {
                             childTag.Add(tarCl.tag);
                         }
                     }
                     if (tarCl.tag == "group1_zhijia_l")
                     {
                         //恢复旋转和位置,因为相同,所以设置一个方法
                         ResetSR(tarCl.transform);
                         tarCl.transform.DOLocalMove(new Vector3(-0.3f, 0.08f, 0), 1);
                         tarSAR.isCollider   = true;
                         tarSAR.isRoteteSelf = false;
                         tarCl.enabled       = false;
                         if (!childTag.Contains(tarCl.tag))
                         {
                             childTag.Add(tarCl.tag);
                         }
                     }
                     if (tarCl.tag == "group1_zhuanlun")
                     {
                         //恢复旋转和位置,因为相同,所以设置一个方法
                         ResetSR(tarCl.transform);
                         tarCl.transform.DOLocalMove(new Vector3(0.015f, 0.82f, 0), 1);
                         tarSAR.isCollider   = true;
                         tarSAR.isRoteteSelf = false;
                         tarCl.enabled       = false;
                         if (!childTag.Contains(tarCl.tag))
                         {
                             childTag.Add(tarCl.tag);
                         }
                     }
                     if (tarCl.tag == "group1_dingzi")
                     {
                         //恢复旋转和位置,因为相同,所以设置一个方法
                         ResetSR(tarCl.transform);
                         tarCl.transform.DOLocalMove(new Vector3(0, 0, 0), 1);
                         tarSAR.isCollider   = true;
                         tarSAR.isRoteteSelf = false;
                         tarCl.enabled       = false;
                         if (!childTag.Contains(tarCl.tag))
                         {
                             childTag.Add(tarCl.tag);
                         }
                     }
                 }
             }
         }
     }
 }
    void DrayTar()
    {
        //运行在pc
        if (RuntimePlatform.WindowsEditor == Application.platform)
        {
            float      x   = Input.GetAxis("Mouse X");
            float      y   = Input.GetAxis("Mouse Y");
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Input.GetMouseButton(0))
            {
                if (Physics.Raycast(ray, out hit, 1000f, myMask))
                {
                    if (lastTrans != null)
                    {
                        lastTrans.GetComponent <ScaleAndRotate> ().enabled = false;
                    }
                    tarTrans = hit.transform;
                    ScaleAndRotate tarScale = tarTrans.GetComponent <ScaleAndRotate> ();
                    if (tarScale == null)
                    {
                        tarScale = tarTrans.gameObject.AddComponent <ScaleAndRotate> ();
                    }
                    tarScale.isRoteteSelf = false;
                    tarScale.isDragMove   = true;
                    tarTrans.rotation     = Quaternion.Euler(new Vector3(0, 0, 0));
                }
                if (tarTrans != null)
                {
                    if (!tarTrans.GetComponent <ScaleAndRotate> ().isCollider)
                    {
//						tarTrans.position += new Vector3 (x, 0f, y) * 15f;
                        Vector3 v1 = Camera.main.ScreenToViewportPoint(Input.mousePosition);
                        Vector3 v2 = Camera.main.WorldToViewportPoint(tarTrans.position);
                        tarTrans.position = Camera.main.ViewportToWorldPoint(new Vector3(v1.x, v1.y, v2.z));
                    }
                }
            }
            if (Input.GetMouseButtonUp(0))
            {
                if (tarTrans != null)
                {
                    tarTrans.GetComponent <ScaleAndRotate> ().isDragMove = false;
                    lastTrans = tarTrans;
                    lastTrans.GetComponent <ScaleAndRotate> ().enabled = true;
                    tarTrans = null;
                }
            }
        }

        //安卓手机上的移动操作,通过移动可以实现两个物体的合并
        if (Application.platform == RuntimePlatform.Android)
        {
            if (Input.touchCount > 0)
            {
                Touch figer = Input.GetTouch(0);
                if (figer.phase == TouchPhase.Stationary)
                {
                    Ray        ray = Camera.main.ScreenPointToRay(figer.position);
                    RaycastHit hit;
                    if (Physics.Raycast(ray, out hit, 1000f, myMask))
                    {
                        nextTimer -= Time.deltaTime;
                        if (nextTimer < 0 && tarTrans == null)
                        {
                            if (lastTrans != null)
                            {
                                lastTrans.GetComponent <ScaleAndRotate> ().enabled = false;
                            }
                            tarTrans = hit.transform;
                            ScaleAndRotate tarScale = tarTrans.GetComponent <ScaleAndRotate> ();
                            if (tarScale == null)
                            {
                                tarScale = tarTrans.gameObject.AddComponent <ScaleAndRotate> ();
                            }
                            tarScale.isRoteteSelf = false;
                            tarScale.isDragMove   = true;
                            Handheld.Vibrate();
                            tarTrans.rotation = Quaternion.Euler(new Vector3(0, 0, 0));
                        }
                    }
                }

                if (figer.phase == TouchPhase.Ended)
                {
                    nextTimer = 1.5f;
                    if (tarTrans != null)
                    {
                        tarTrans.GetComponent <ScaleAndRotate> ().isDragMove = false;
                        lastTrans = tarTrans;
                        lastTrans.GetComponent <ScaleAndRotate> ().enabled = true;
                        tarTrans = null;
                    }
                }

                if (figer.phase == TouchPhase.Moved && tarTrans != null)
                {
                    if (!tarTrans.GetComponent <ScaleAndRotate> ().isCollider)
                    {
//						Vector2 nextDir = figer.deltaPosition;
//						tarTrans.position += new Vector3 (nextDir.x, 0f, nextDir.y) * Time.deltaTime *40f;
                        Vector3 v1 = Camera.main.ScreenToViewportPoint(figer.position);
                        Vector3 v2 = Camera.main.WorldToViewportPoint(tarTrans.position);
                        tarTrans.position = Camera.main.ViewportToWorldPoint(new Vector3(v1.x, v1.y, v2.z));
                    }
                }
            }
        }
    }