Example #1
0
 public Bico() : base(new PetAttackFeatures()
 {
     nome                 = AttackNameId.bico,
     tipo                 = PetTypeName.Normal,
     carac                = AttackDiferentialId.colisao,
     custoPE              = 0,
     potenciaCorrente     = 10,
     potenciaMaxima       = 15,
     potenciaMinima       = 7,
     tempoDeReuso         = 3.5f,
     TempoNoDano          = 0.5f,
     velocidadeDeGolpe    = 25f,
     distanciaDeRepulsao  = 65f,
     velocidadeDeRepulsao = 33,
     tempoDeMoveMin       = 0.3f,//74
     tempoDeMoveMax       = 0.8f,
     tempoDeDestroy       = 1f,
     custoDeStamina       = 35
 }
                      )
 {
     carac = new ImpactFeatures()
     {
         noImpacto       = ImpactParticles.impactoComum,
         nomeTrail       = AttacksTrails.umCuboETrail,
         parentearNoOsso = true
     };
 }
        public void ImpatoAtivo(GameObject G, PetAttackBase ativa, ImpactFeatures caracteristica, GameObject focado = null)
        {
            if (focado)
            {
                alvoProcurado = focado.transform;
            }
            else
            {
                alvoProcurado = FindBestTarget.Procure(G, new string[1] {
                    "Criature"
                });
            }

            tempoDecorrido += Time.deltaTime;
            if (!procurouAlvo)
            {
                alvoProcurado = CriaturesPerto.procureUmBomAlvo(G);
                procurouAlvo  = true;
                Debug.Log(alvoProcurado + "  esse é o alvo");
                AttackHelper(alvoProcurado, G.transform);
            }

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

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

                addView = true;
            }

            if (tempoDecorrido < ativa.TempoDeMoveMax)
            {
                if (((int)(tempoDecorrido * 10)) % 2 == 0 && alvoProcurado)
                {
                    AttackHelper(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);
            }
        }
Example #3
0
        public static void AdicionaOColisor(GameObject G,
                                            PetAttackBase golpeAtivo,
                                            ImpactFeatures caracteristica,
                                            float tempoDecorrido)
        {
            GameObject view = Resources.Load <GameObject>("DamageColliders/" + caracteristica.nomeTrail.ToString());
            //GameObject view = GameController.g.El.retornaColisor(caracteristica.nomeTrail);
            //		print(nomeColisor);
            colisor C = GetCollider(G, golpeAtivo.Nome);// = new colisor();

            GameObject view2 = (GameObject)MonoBehaviour.Instantiate(view, C.deslColisor, Quaternion.identity);

            view2.transform.localRotation = view.transform.rotation;


            if (caracteristica.parentearNoOsso)
            {
                view2.transform.parent = G.transform.Find(C.osso).transform;
            }
            else
            {
                view2.transform.parent = G.transform;
            }

            view2.transform.localPosition             = C.deslTrail;
            view2.transform.localRotation             = view.transform.rotation;
            view2.GetComponent <BoxCollider>().center = C.deslColisor;
            view2.name = "colisor" + golpeAtivo.Nome.ToString();
            view2.transform.localScale *= (golpeAtivo.ColisorScale * C.ColisorScale);


            /*
             *      PARA DESTUIR O COLISOR .
             *      QUANDO O GOLPE ERA INTERROMPIDO
             *      O COLISOR PERMANECIA NO PERSONAGEM
             */
            MonoBehaviour.Destroy(view2, golpeAtivo.TempoDeDestroy - tempoDecorrido);


            /*************************************************************/


            DamageCollider proj = view2.AddComponent <DamageCollider>();

            proj.velocidadeProjetil = 0f;
            proj.noImpacto          = caracteristica.noImpacto;
            proj.dono      = G;
            proj.esseGolpe = golpeAtivo;
            //			proj.forcaDoDano = 25f;
            //addView = true;
        }