예제 #1
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;
        }
    }
 public override void IniciaGolpe(GameObject G)
 {
     aImpacto = new AtualizadorDeImpactos();
     aImpacto.ReiniciaAtualizadorDeImpactos();
     AnimadorCriature.AnimaAtaque(G, Nome.ToString());
 }