Пример #1
0
    public void Select(GameObject carPart)
    {
        if (isDraged)
        {
            Deselect();
        }

        isDraged        = true;
        selectedCarPart = carPart;
        part            = selectedCarPart.GetComponent <ICarPart>();
    }
Пример #2
0
 private void TryToAttachPart()
 {
     if (isAbelToPlace)
     {
         carParts.Add(part);
         part.HighlightSprite(Color.white);
         isDraged        = false;
         selectedCarPart = null;
         part            = null;
     }
     else
     {
         Deselect();
     }
 }
Пример #3
0
    private void Update()
    {
        Vector2 mousePos = cam.ScreenToWorldPoint(Input.mousePosition);

        if (isDraged)
        {
            selectedCarPart.transform.position = mousePos;

            isAbelToPlace = CurssorCast(mousePos) && !part.CastColider(partFilter);
            part.HighlightSprite(isAbelToPlace ? canPlace : cantPlace);

            if (Input.GetMouseButtonUp(0))
            {
                TryToAttachPart();
            }
        }
        else
        {
            Collider2D col = Physics2D.OverlapPoint(mousePos, partFilter.layerMask);
            if (col != null && col != lastHiglitedColider && col.TryGetComponent(out ICarPart carPart))
            {
                if (lastHiglited != null)
                {
                    lastHiglited.HighlightSprite(Color.white);
                }
                carPart.HighlightSprite(higlited);

                lastHiglited        = carPart;
                lastHiglitedColider = col;
            }
            else if (lastHiglitedColider != col)
            {
                lastHiglited.HighlightSprite(Color.white);
                lastHiglited        = null;
                lastHiglitedColider = null;
            }

            if (lastHiglitedColider != null)
            {
                if (Input.GetMouseButtonDown(0))
                {
                    isDraged = true;
                    lastHiglited.HighlightSprite(Color.white);
                    part            = lastHiglited;
                    selectedCarPart = lastHiglitedColider.gameObject;
                    carParts.Remove(lastHiglited);

                    lastHiglited        = null;
                    lastHiglitedColider = null;
                }
                else if (Input.GetMouseButtonUp(1))
                {
                    carParts.Remove(lastHiglited);
                    lastHiglited.DeletePart();

                    lastHiglited        = null;
                    lastHiglitedColider = null;
                }
            }
        }
    }