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; }
// 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; } } }