示例#1
0
    private void OnDotTouched(Dot dot)
    {
        if (dot.isTouching)
        {
            return;
        }

        if (!_lastDot)
        {
            SelectDot();
        }

        if (_lastDot != dot && _lastDot.ColorId == dot.ColorId &&
            Mathf.Abs(dot.Coordinates.x - _lastDot.Coordinates.x) <= 1 &&
            Mathf.Abs(dot.Coordinates.y - _lastDot.Coordinates.y) <= 1 &&
            (dot.Coordinates.x == _lastDot.Coordinates.x || dot.Coordinates.y == _lastDot.Coordinates.y))
        {
            SelectDot();
        }

        void SelectDot()
        {
            dot.isTouching = true;
            _selectedDots.Add(dot);
            _lastDot = dot;
        }

        lineController.DrawLine(_selectedDots);
    }
示例#2
0
    // Update is called once per frame
    void Update()
    {
        RaycastHit2D hit;

        hit = Physics2D.Raycast(this.transform.position, new Vector2(this.transform.position.x, -10));
        Debug.Log(this.transform.position.x + "      .......... " + hit.transform.position.x);
        Debug.Log(hit.transform.name);
        LineController line = transform.Find("LineGenerator").GetComponent <LineController>();

        line.DrawLine(new List <Vector3> {
            this.gameObject.transform.position, hit.transform.position
        });
    }
示例#3
0
    // Update is called once per frame
    void Update()
    {
        Vector3 startPos = this.transform.position;

        float moveX = Input.GetAxis("Mouse X") * m_sensitivityX;
        float moveY = Input.GetAxis("Mouse Y") * m_sensitivityY;

        if (m_isDeviationActive)
        {
            switch (m_deviationDir)
            {
            case "Left":
                transform.Translate(moveX - moveY * m_deviation, moveY, 0);
                break;

            case "Right":
                transform.Translate(moveX + moveY * m_deviation, moveY, 0);
                break;

            case "Down":
                transform.Translate(moveX, moveY - moveX * m_deviation, 0);
                break;

            default:     // Up
                transform.Translate(moveX, moveY + moveX * m_deviation, 0);
                break;
            }
        }
        else
        {
            transform.Translate(moveX, moveY, 0);
        }

        // create line
        LineController.DrawLine(startPos, transform.position);

        // left click
        if (m_isReturnToStart == false &&
            Input.GetMouseButtonDown(0))
        {
            Debug.Log($"X = {transform.position.x}, Y = {transform.position.y}");

            // send position in click event
            CursorClicked?.Invoke(this.gameObject, null);

            // must return to start now
            m_isReturnToStart = true;
            GameObject.FindGameObjectWithTag("StartText").GetComponent <Text>().text = "RETURN";

            //removed: reset position of cursor
            //transform.position = m_respawnObj.transform.position;
        }
        else if (m_isReturnToStart == true)
        {
            float bound = m_respawnObj.GetComponent <SpriteRenderer>().bounds.size.x;

            Vector2 respawnPos = new Vector2(m_respawnObj.transform.position.x, m_respawnObj.transform.position.y);
            Vector2 cursorPos  = new Vector2(this.transform.position.x, this.transform.position.y);
            // if close enough
            float distance = Vector2.Distance(respawnPos, cursorPos);
            if (distance <= bound)
            {
                m_isReturnToStart = false;
                GameObject.FindGameObjectWithTag("StartText").GetComponent <Text>().text = "GO";
            }
        }
    }