예제 #1
0
 public void OnPointerDown(PointerEventData data)
 {
     if (Input.touchCount <= 1)
     {
         twoTap    = false;
         prevDist  = 0;
         hitCtrl   = null;
         hitCol    = null;
         hitPos    = Vector3.zero;
         holdTime  = 0;
         dragDelta = 0;
         clickPos  = data.position;
         RaycastHit hit;
         if (CameraView.RaycastScreen(data.position, out hit))
         {
             hitCol  = hit.collider;
             hitCtrl = hitCol.GetComponent <MyController> ();
             hitPos  = hit.point;
             hitDist = hit.distance;
             if (hitCtrl == null)
             {
                 hitCtrl = CameraView.GetClosestControllerToPoint(hitPos, 0.06f * hitDist);
             }
             if (hitCtrl == null)
             {
                 CameraView.ShowTapNeutral(hitPos);
             }
             else
             {
                 if (hitCtrl.isLocalPlayer)
                 {
                     CameraView.ShowTapAlly(hitCtrl.transform.position);
                 }
                 else
                 {
                     CameraView.ShowTapEnemy(hitCtrl.transform.position);
                 }
             }
         }
         else if (CameraView.SphereCastScreen(data.position, out hit))
         {
             hitCol  = hit.collider;
             hitCtrl = hitCol.GetComponent <MyController> ();
             hitPos  = hit.point;
             hitDist = hit.distance;
             if (hitCtrl == null)
             {
                 hitCtrl = CameraView.GetClosestControllerToPoint(hitPos, 0.06f * hitDist);
             }
             if (hitCtrl == null)
             {
                 CameraView.ShowTapNeutral(hitPos);
             }
             else
             {
                 if (hitCtrl.isLocalPlayer)
                 {
                     CameraView.ShowTapAlly(hitCtrl.transform.position);
                 }
                 else
                 {
                     CameraView.ShowTapEnemy(hitCtrl.transform.position);
                 }
             }
         }
     }
     else
     {
         RaycastHit hit;
         if (CameraView.RaycastScreen(data.position, out hit))
         {
             CameraView.ShowTapNeutral(hit.point);
         }
         else if (CameraView.SphereCastScreen(data.position, out hit))
         {
             CameraView.ShowTapNeutral(hit.point);
         }
         twoTap   = true;
         holdTime = -1;
         Vector2 a = Input.GetTouch(0).position;
         Vector2 b = Input.GetTouch(1).position;
         prevDist = new Vector2((a.x - b.x) * 12 / Screen.width, (a.y - b.y) * 12 / Screen.height).magnitude;
     }
 }
예제 #2
0
    /*public void OnPointerClick(PointerEventData data){
     *      OnPointerDown (data);
     *      OnPointerUp (data);
     *
     * }*/

    public void OnPointerDown(PointerEventData data)
    {
        touchCount++;
        touchIds.Add(data.pointerId);
        if (touchCount <= 1)
        {
            prevDist  = 0;
            hitCtrl   = null;
            hitCol    = null;
            hitBut    = null;
            hitPos    = Vector3.zero;
            holdTime  = 0;
            dragDelta = 0;
            clickPos  = data.position;
            RaycastHit hit;

            if (CameraView.RaycastWorldCanvas(data.position, out hit))
            {
                Button b = hit.collider.GetComponent <Button> ();
                b.Select();
                //var pointer = new PointerEventData(EventSystem.current);

                //ExecuteEvents.Execute(b.gameObject, pointer, ExecuteEvents.pointerEnterHandler);
                //ExecuteEvents.Execute(b.gameObject, pointer, ExecuteEvents.pointerDownHandler);
                b.OnPointerEnter(data);
                b.OnPointerDown(data);
                hitBut = b;
                hitCol = hit.collider;
            }
            else if (CameraView.RaycastScreen(data.position, out hit))
            {
                hitCol  = hit.collider;
                hitCtrl = hitCol.GetComponent <MyController> ();
                hitPos  = hit.point;
                hitDist = hit.distance;
                if (hitCtrl == null)
                {
                    hitCtrl = CameraView.GetClosestControllerToPoint(hitPos, 0.06f * hitDist);
                }
                if (hitCtrl == null)
                {
                    CameraView.ShowTapNeutral(hitPos);
                }
                else
                {
                    if (hitCtrl.team == 0)
                    {
                        CameraView.ShowTapAlly(hitCtrl.transform.position);
                    }
                    else
                    {
                        CameraView.ShowTapEnemy(hitCtrl.transform.position);
                    }
                }
            }
            else if (CameraView.SphereCastScreen(data.position, out hit))
            {
                hitCol  = hit.collider;
                hitCtrl = hitCol.GetComponent <MyController> ();
                hitPos  = hit.point;
                hitDist = hit.distance;
                if (hitCtrl == null)
                {
                    hitCtrl = CameraView.GetClosestControllerToPoint(hitPos, 0.06f * hitDist);
                }
                if (hitCtrl == null)
                {
                    CameraView.ShowTapNeutral(hitPos);
                }
                else
                {
                    if (hitCtrl.team == 0)
                    {
                        CameraView.ShowTapAlly(hitCtrl.transform.position);
                    }
                    else
                    {
                        CameraView.ShowTapEnemy(hitCtrl.transform.position);
                    }
                }
            }
        }
        else
        {
            RaycastHit hit;
            if (CameraView.RaycastScreen(data.position, out hit))
            {
                CameraView.ShowTapNeutral(hit.point);
            }
            else if (CameraView.SphereCastScreen(data.position, out hit))
            {
                CameraView.ShowTapNeutral(hit.point);
            }
            holdTime = -1;
            Vector2 a = Input.GetTouch(0).position;
            Vector2 b = Input.GetTouch(1).position;
            prevDist = new Vector2((a.x - b.x) * 12 / Screen.width, (a.y - b.y) * 12 / Screen.height).magnitude;
        }
    }