コード例 #1
0
ファイル: PathFinder.cs プロジェクト: game-comenius/Comenius2
    //Espera terminar de andar para interagir com o objeto.
    private IEnumerator WaitForInteractable(Vector3[] _destinoWorldPoint, GotToInteractable _event)
    {
        if (path != null && path.Count > 1)
        {
            path.RemoveRange(0, path.Count - 2);
        }

        yield return(new WaitUntil(() => walkCoroutine == null));

        if (_camera == null)
        {
            _camera = FindObjectOfType <Camera>();
        }

        path = GridScript.gridScript.FindPathToInteractable(transform.position + footbaseOffset, _destinoWorldPoint);

        // Configurar as funções que serão executadas quando Lurdinha
        // chegar ao seu destino
        // Primeiro, o campo hasTarget = false para que os próximos comandos
        // de movimento não sejam ignorados (Lurdinha NÃO se movimenta se
        // ela tiver um alvo, ou seja, se hasTarget == true)
        //PathFinder.gotToInteractable += (() => hasTarget = false);
        // Então, a função relacionada ao seu objetivo será executada, ela foi
        // passada como o parâmetro _event

        PathFinder.gotToInteractable += _event;

        if (path == null)
        {
            if (gotToInteractable != null)
            {
                gotToInteractable();

                gotToInteractable -= gotToInteractable;

                Vector3 point = lookTo[0];

                for (int i = 1; i < lookTo.Length; i++)
                {
                    if ((point - transform.position).magnitude > (lookTo[i] - transform.position).magnitude)
                    {
                        point = lookTo[i];
                    }
                }

                Turn(point);

                lookTo = null;
            }
            else
            {
                Turn(_camera.ScreenToWorldPoint(Input.mousePosition));
            }
        }
    }
コード例 #2
0
ファイル: PathFinder.cs プロジェクト: game-comenius/Comenius2
    //Começar a corotina WaitForInteractable
    public void WalkToInteractable(Vector3[] _destinoWorldPoint, GotToInteractable _event)
    {
        lookTo = _destinoWorldPoint;

        StartCoroutine(WaitForInteractable(_destinoWorldPoint, _event));
    }