示例#1
0
    private void CheckClick()
    {
        int buttonNumber = 0;

        if (Input.GetMouseButtonDown(0))
        {
            buttonNumber = -1;
        }
        else if (Input.GetMouseButtonDown(1))
        {
            buttonNumber = 1;
        }

        if (buttonNumber != 0)
        {
            RaycastHit2D hit = Physics2D.Raycast(cam.ScreenToWorldPoint(Input.mousePosition),
                                                 Vector2.zero,
                                                 clickRayDistance,
                                                 ~ignoreMask
                                                 );

            Debug.Log(hit.collider);

            if (hit.collider != null)
            {
                if (hit.collider.TryGetComponent <ClickCommandObject>(out ClickCommandObject commandObject))
                {
                    if (buttonNumber > 0)
                    {
                        commandObject.OnRightClickCommand(hit.point);
                        return;
                    }
                    else
                    {
                        commandObject.OnLeftCkickCommand(hit.point);
                        return;
                    }
                }
            }
            EmptyClickEvent?.Invoke();
        }
    }
示例#2
0
 /// <summary>
 /// Команда, которая будет выполнена при клике левой кнопкой мыши.
 /// В данном случае - закрытие контекстного меню
 /// </summary>
 /// <param name="clickPosition">позиция клика, которую можно использовать в команде</param>
 public override void OnLeftCkickCommand(Vector2 clickPosition)
 {
     ReturnToDefaultState();
     EmptyClickEvent?.Invoke();
 }