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); } }
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; }