Ejemplo n.º 1
0
    public void OnEndDrag(PointerEventData eventData)
    {
        if (!canDrag)
        {
            return;
        }

        canvasGroup.alpha          = 1f;
        canvasGroup.blocksRaycasts = true;

        OnEndDragHandler?.Invoke(eventData, false);
        leftBeingHeld = false;

        var results = new List <RaycastResult>();

        EventSystem.current.RaycastAll(eventData, results);
        CandiArea dropArea = null;

        foreach (var result in results)
        {
            dropArea = result.gameObject.GetComponent <CandiArea>();
            if (dropArea != null)
            {
                break;
            }
        }

        if (dropArea != null && dropArea.Accepts(this))
        {
            int TransformX = (int)rigidbody2D.rotation;
            if (TransformX < 0)
            {
                TransformX = (TransformX - 45) / 90 * 90;
            }
            else
            {
                TransformX = (TransformX + 45) / 90 * 90;
            }

            transform.SetPositionAndRotation(transform.position, Quaternion.Euler(0, 0, TransformX));

            if (Mathf.Abs(TransformX) / 90 % 2 == 1)
            {
                horizontalState = false;
            }
            else
            {
                horizontalState = true;
            }

            int lastTotalCandi = GuideLine.totalCandi;
            dropArea.Drop(this);
            OnEndDragHandler?.Invoke(eventData, true);

            if (lastTotalCandi != GuideLine.totalCandi)
            {
                rigidbody2D.GetComponent <Rigidbody2D>().bodyType = RigidbodyType2D.Static;
                canDrag = false;
                StartCoroutine(CandiPlaced());
                return;
            }
        }
        rigidbody2D.GetComponent <Rigidbody2D>().bodyType = RigidbodyType2D.Dynamic;
        rigidbody2D.gravityScale = 150f;
    }
Ejemplo n.º 2
0
 protected virtual void Awake()
 {
     DropArea = GetComponent <CandiArea>() ?? gameObject.AddComponent <CandiArea>();
     DropArea.OnDropHandler += OnItemDropped;
 }