public static void InsereAfastamento(
        Vector3 dirDeAfastamento,
        float distanciaDeAfastamento,
        float tempoDeAfastamento,
        GameObject oAfastado
        )
    {
        AfastadorDeInimigoEmDano af = oAfastado.AddComponent <AfastadorDeInimigoEmDano>();

        af.dirAfastamento         = dirDeAfastamento;
        af.distanciaDeAfastamento = distanciaDeAfastamento;
        af.tempoDeAfastamento     = tempoDeAfastamento;
    }
Пример #2
0
    public void AfastaInimigoDeDano(Transform heroi)
    {
        GameObject[] inimigos = InimigoBase.InimigosPerto(distanciaMaxParaOAfastamento, heroi.position);

        foreach (GameObject I in inimigos)
        {
            AfastadorDeInimigoEmDano.InsereAfastamento(
                (Vector3.ProjectOnPlane(I.transform.position - heroi.position, Vector3.up)).normalized,
                distanciaDeAfastamento,
                tempoDeAfastamento,
                I
                );
        }
    }
Пример #3
0
    void ProcureObjetosPerto()
    {
        GameObject[] osPerto = InimigoBase.InimigosPerto(raioDeDano, transform.position);

        EstadoDePersonagem_Gerente T     = GameObject.FindWithTag("Player").GetComponent <EstadoDePersonagem_Gerente>();
        DadosDoPersonagem          dados = T.Dados;
        float distancia = Vector3.Distance(T.transform.position, transform.position);

        if (distancia < raioDeDano)
        {
            T.AplicarDano(ValorDeDano(distancia, dados.G_XP.Nivel));
            AfastamentoDeExplosaoParaHeroi afH = T.gameObject.AddComponent <AfastamentoDeExplosaoParaHeroi>();
            afH.dirAfastamento = Vector3.ProjectOnPlane(T.transform.position - transform.position, Vector3.up).normalized;
        }

        foreach (GameObject I in osPerto)
        {
            AfastadorDeInimigoEmDano.InsereAfastamento(
                Vector3.ProjectOnPlane((I.transform.position - transform.position), Vector3.up).normalized, distanciaDeAfastamento, tempoDeAfastamento, I);
            I.GetComponent <InimigoBase>()
            .TomaDano(ValorDeDano(Vector3.Distance(I.transform.position, transform.position), dados.G_XP.Nivel), TipoDeDano.explosao);
        }
    }