public void ImpatoAtivo(GameObject G, IGolpeBase ativa, CaracteristicasDeImpacto caracteristica)
    {
        tempoDecorrido += Time.deltaTime;
        if (!procurouAlvo)
        {
            alvoProcurado = CriaturesPerto.procureUmBomAlvo(G);
            procurouAlvo  = true;
            Debug.Log(alvoProcurado + "  esse é o alvo");
            ajudaAtaque(alvoProcurado, G.transform);
        }

        if (!addView)
        {
            tempoDecorrido += ativa.TempoDeMoveMin;
            ColisorDeGolpe.AdicionaOColisor(G, ativa, caracteristica, tempoDecorrido);

            addView = true;
        }

        if (tempoDecorrido < ativa.TempoDeMoveMax)
        {
            if (((int)(tempoDecorrido * 10)) % 2 == 0 && alvoProcurado)
            {
                ajudaAtaque(alvoProcurado, G.transform);
            }

            ativa.DirDeREpulsao = G.transform.forward;

            if (!controle)
            {
                controle = G.GetComponent <CharacterController>();
            }
            controle.Move(ativa.VelocidadeDeGolpe * G.transform.forward * Time.deltaTime + Vector3.down * 9.8f);
        }
    }
Esempio n. 2
0
    public void ImpactoAtivo(GameObject G, IGolpeBase ativa, CaracteristicasDeImpactoComSalto caracteristica, float colocarColisor = 0)
    {
        tempoDecorrido += Time.deltaTime;

        if (!procurouAlvo)
        {
            alvoProcurado = CriaturesPerto.procureUmBomAlvo(G);
            procurouAlvo  = true;
            // Debug.Log(alvoProcurado + "  esse é o alvo");
            AtualizadorDeImpactos.ajudaAtaque(alvoProcurado, G.transform);
            if (alvoProcurado != null)
            {
                ativa.DirDeREpulsao = (Vector3.ProjectOnPlane(alvoProcurado.position - G.transform.position, Vector3.up)).normalized;
            }

            AnimadorCriature.AnimaAtaque(G, ativa.Nome.ToString());

            /* aproveitado da geração 1 de scripts*/
            ao        = G.AddComponent <impactoAoChao>();
            ao.aoChao = caracteristica.toque.ToString();
            /* ******************* */
        }

        if (!adview && tempoDecorrido > colocarColisor)
        {
            ColisorDeGolpe.AdicionaOColisor(G, ativa, caracteristica.deImpacto, tempoDecorrido + ativa.TempoDeMoveMin);

            adview = true;
        }

        if (caracteristica.final == ImpactoAereoFinal.MaisAltoQueOAlvo)
        {
            MaisAltoQueOAlvo(G, ativa);
        }
        else
        {
            AvanceEPareAbaixo(G, ativa);
        }


        if (tempoDecorrido > ativa.TempoDeMoveMax)
        {
            nav.enabled = estavaParada;
        }
    }
Esempio n. 3
0
    public override void UpdateGolpe(GameObject G)
    {
        tempoDecorrido += Time.deltaTime;
        if (tempoDecorrido < TempoDeMoveMax)
        {
            if (!controle)
            {
                controle = G.GetComponent <CharacterController>();
            }

            controle.Move(Vector3.up * velocidadeSubindo * Time.deltaTime);
        }

        if (tempoDecorrido > TempoDeMoveMax && tempoDecorrido < TempoDeDestroy)
        {
            if (!procurouAlvo)
            {
                alvoProcurado = acaoDeGolpeRegenerate.procureUmBomAlvo(G, 100);
            }

            if (!addView)
            {
                ColisorDeGolpe.AdicionaOColisor(G, this, carac, tempoDecorrido);
                addView = true;
            }

            Vector3 dir = G.transform.forward + 0.5f * Vector3.down;

            if (alvoProcurado)
            {
                if (Vector3.ProjectOnPlane(posInicial - alvoProcurado.position, Vector3.up).sqrMagnitude > 25)
                {
                    dir = alvoProcurado.position - G.transform.position + 0.5f * Vector3.down;
                }
            }

            dir.Normalize();

            controle.Move(dir * VelocidadeDeGolpe * Time.deltaTime);
        }
    }