Exemple #1
0
    public DirectionalControl PlaceDirectionalControl(GameObject prefab, Vector3 position)
    {
        bool existingControl = CheckIfExisting(position);

        if (!existingControl)
        {
            DirectionalControl d = Instantiate(directionPrefab, NearestGridPosition(position), Quaternion.identity).GetComponent <DirectionalControl>();
            FindObjectOfType <AudioManager>().Play("PlaceArrow");
            return(d);
        }
        else
        {
            return(null);
        }
    }
Exemple #2
0
    // Update is called once per frame
    void Update()
    {
        FindObjectOfType <DirectionSelection>().status = values;
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        highlight.pointDirection = currentDirection;
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit))
        {
            if (hit.collider.gameObject.CompareTag("Floor"))
            {
                highlight.position = NearestGridPosition(hit.point);
            }
        }
        bool b = true;

        if (FindObjectOfType <PauseUI>() != null)
        {
            b = !FindObjectOfType <PauseUI>().isPaused;
        }
        if (Input.GetMouseButtonDown(0) && b)
        {
            if (Physics.Raycast(ray, out hit))
            {
                if (hit.collider.GetComponent <FloatingColectable>() != null)
                {
                    hit.collider.GetComponent <FloatingColectable>().OnCollected.Invoke();
                }
                else
                {
                    if (values[IntFromDirection(currentDirection)] > 0)
                    {
                        DirectionalControl d = PlaceDirectionalControl(directionPrefab, highlight.position);
                        if (d != null)
                        {
                            d.pointDirection = currentDirection;
                            values[IntFromDirection(currentDirection)] -= 1;
                        }
                    }
                    else
                    {
                        FindObjectOfType <DirectionSelection>().Error(IntFromDirection(currentDirection));
                    }
                }
            }
        }
        if (Input.GetMouseButtonDown(1) && b)
        {
            if (Physics.Raycast(ray, out hit))
            {
                if (hit.collider.GetComponent <DirectionalControl>() != null)
                {
                    ParticleSystem p = Instantiate(Dust, hit.collider.GetComponent <DirectionalControl>().transform.position, Quaternion.Euler(new Vector3(-90, 0, 0))).GetComponent <ParticleSystem>();
                    p.Play();
                    Destroy(p.gameObject, 5);
                    FindObjectOfType <AudioManager>().Play("Remove");
                    Destroy(hit.collider.GetComponent <DirectionalControl>().gameObject);
                }
            }
        }
        if (Input.GetKeyDown(KeyCode.W) || Input.GetKeyDown(KeyCode.UpArrow))
        {
            ChangeSelctionDirection(DirectionalControl.Direction.Up);
        }
        else if (Input.GetKeyDown(KeyCode.S) || Input.GetKeyDown(KeyCode.DownArrow))
        {
            ChangeSelctionDirection(DirectionalControl.Direction.Down);
        }
        else if (Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.LeftArrow))
        {
            ChangeSelctionDirection(DirectionalControl.Direction.Left);
        }
        else if (Input.GetKeyDown(KeyCode.D) || Input.GetKeyDown(KeyCode.RightArrow))
        {
            ChangeSelctionDirection(DirectionalControl.Direction.Right);
        }
    }
    // Update is called once per frame
    void Update()
    {
        foreach (DirectionalControl d in FindObjectsOfType <DirectionalControl>())
        {
            Car     car      = FindObjectOfType <Car>();
            Vector3 carPos   = new Vector3(car.transform.position.x, 0, car.transform.position.z);
            Vector3 position = d.transform.position;

            if (car.m_direction == DirectionalControl.Direction.Down && carPos.z == position.z && carPos.x > position.x)
            {
                Debug.DrawLine(carPos, position);
                if (nextControl == null)
                {
                    nextControl = d;
                }
                else
                {
                    if (Vector3.Distance(nextControl.transform.position, carPos) > Vector3.Distance(d.transform.position, carPos))
                    {
                        nextControl = d;
                    }
                }
            }
            if (car.m_direction == DirectionalControl.Direction.Up && carPos.z == position.z && carPos.x < position.x)
            {
                Debug.DrawLine(carPos, position);
                if (nextControl == null)
                {
                    nextControl = d;
                }
                else
                {
                    if (Vector3.Distance(nextControl.transform.position, carPos) > Vector3.Distance(d.transform.position, carPos))
                    {
                        nextControl = d;
                    }
                }
            }
            if (car.m_direction == DirectionalControl.Direction.Right && carPos.x == position.x && carPos.z > position.z)
            {
                Debug.DrawLine(carPos, position);
                if (nextControl == null)
                {
                    nextControl = d;
                }
                else
                {
                    if (Vector3.Distance(nextControl.transform.position, carPos) > Vector3.Distance(d.transform.position, carPos))
                    {
                        nextControl = d;
                    }
                }
            }
            if (car.m_direction == DirectionalControl.Direction.Left && carPos.x == position.x && carPos.z < position.z)
            {
                Debug.DrawLine(carPos, position);
                if (nextControl == null)
                {
                    nextControl = d;
                }
                else
                {
                    if (Vector3.Distance(nextControl.transform.position, carPos) > Vector3.Distance(d.transform.position, carPos))
                    {
                        nextControl = d;
                    }
                }
            }
        }
        if (nextControl == null)
        {
            index = 4;
        }
        else
        {
            if (nextControl.pointDirection == DirectionalControl.Direction.Left)
            {
                index = 0;
            }
            else if (nextControl.pointDirection == DirectionalControl.Direction.Up)
            {
                index = 1;
            }
            else if (nextControl.pointDirection == DirectionalControl.Direction.Down)
            {
                index = 2;
            }
            else if (nextControl.pointDirection == DirectionalControl.Direction.Right)
            {
                index = 3;
            }
        }
        arrow.sprite = arrows[index];
        arrow.color  = colors[index];
    }