Пример #1
0
 public virtual void OnPointerDown(PointerEventData eventData)
 {
     if (false == _isTouchEnabled)
     {
         return;
     }
     if (transform.childCount == 0)
     {
         return;
     }
     ResetPokerTouchState(true);
     _mouseMoveOrientation = MouseMoveOrientation.NONE;
     _lastMousePos         = Input.mousePosition;
     _isTouching           = true;
     _isTouchUp            = false;
 }
Пример #2
0
    // Update is called once per frame
    void Update()
    {
        if (_isTouching)
        {
            MouseMoveOrientation mouseMoveOrientation = _mouseMoveOrientation;
            if (Input.mousePosition.x - _lastMousePos.x < 0f)
            {
                mouseMoveOrientation = MouseMoveOrientation.LEFTWARD;
            }
            else if (Input.mousePosition.x - _lastMousePos.x > 0f)
            {
                mouseMoveOrientation = MouseMoveOrientation.RIGHTWARD;
            }
            if (_mouseMoveOrientation == MouseMoveOrientation.NONE)
            {
                _mouseMoveOrientation = mouseMoveOrientation;
            }
            _lastMousePos = Input.mousePosition;
            if (mouseMoveOrientation != _mouseMoveOrientation)
            {
                _mouseMoveOrientation = mouseMoveOrientation;
                ResetPokerTouchState(true);
            }
            BigTwoPoker  selectedCollider = null;
            float        minZ             = 1000f;
            Collider2D[] colliders        = Physics2D.OverlapPointAll(Camera.main.ScreenToWorldPoint(Input.mousePosition));

            if (colliders.Length > 0)
            {
                foreach (Collider2D collider in colliders)
                {
                    if (collider.GetComponent <BigTwoPoker> ())
                    {
                        if (collider.transform.localPosition.z < minZ)
                        {
                            minZ             = collider.transform.localPosition.z;
                            selectedCollider = collider.GetComponent <BigTwoPoker> ();
                        }
                    }
                }
            }
            if (selectedCollider)
            {
                BigTwoPoker poker = selectedCollider.GetComponent <BigTwoPoker> ();
                if (poker.IsTouchEnabled)
                {
                    bool lastState = poker.IsSelected;
                    poker.IsSelected = !poker.IsSelected;
                    if (lastState != poker.IsSelected)
                    {
                        poker.IsTouchEnabled = false;
                        OnSelectPoker.Invoke(poker);
                    }
                }
            }
            if (_isTouchUp)
            {
                ResetPokerTouchState(false);
                _isTouching = false;
            }
        }
    }