示例#1
0
 public override void IniciaGolpe(GameObject G)
 {
     aImpacto = new StandardImpactUpdate();
     aImpacto.ReiniciaAtualizadorDeImpactos();
     //AnimadorCriature.AnimaAtaque(G, Nome.ToString());
     MessageAgregator <MsgRequestAtkAnimation> .Publish(new MsgRequestAtkAnimation()
     {
         nomeAnima  = Nome.ToString(),
         gameObject = G
     });
 }
示例#2
0
        public void ImpactoAtivo(
            GameObject G,
            PetAttackBase ativa,
            AeroImpactFeatures caracteristica,
            float colocarColisor = 0,
            GameObject focado    = null)
        {
            tempoDecorrido += Time.deltaTime;

            if (!procurouAlvo)
            {
                if (focado)
                {
                    alvoProcurado = focado.transform;
                }
                else
                {
                    alvoProcurado = FindBestTarget.Procure(G, new string[1] {
                        "Criature"
                    });                                                                     //CriaturesPerto.procureUmBomAlvo(G);
                }
                procurouAlvo = true;
                // Debug.Log(alvoProcurado + "  esse é o alvo");
                StandardImpactUpdate.AttackHelper(alvoProcurado, G.transform);
                if (alvoProcurado != null)
                {
                    ativa.DirDeREpulsao = (Vector3.ProjectOnPlane(alvoProcurado.position - G.transform.position, Vector3.up)).normalized;
                }

                MessageAgregator <MsgRequestAtkAnimation> .Publish(new MsgRequestAtkAnimation()
                {
                    gameObject = G,
                    nomeAnima  = ativa.Nome.ToString()
                });

                MessageAgregator <MsgRequest3dSound> .Publish(new MsgRequest3dSound()
                {
                    sender = G.transform,
                    sfxId  = ativa.SomDoGolpe
                });

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

                /* aproveitado da geração 1 de scripts atualizado no 2021*/
                ao               = G.AddComponent <OnFloorImpactParticles>();
                ao.aoChao        = caracteristica.toque.ToString();
                ao.onGroundSound = caracteristica.onTouchGroundSound;
                /* ******************* */
            }

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

                adview = true;
            }

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


            //if (tempoDecorrido > ativa.TempoDeMoveMax)
            //    nav.enabled = estavaParada;
        }