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 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; }
public override void UpdateGolpe(GameObject G, GameObject focado = null) { tempoDecorrido += Time.deltaTime; if (tempoDecorrido < TempoDeMoveMax) { if (!controle) { controle = G.GetComponent <CharacterController>(); } controle.Move(Vector3.up * velocidadeSubindo * Time.deltaTime); } if (tempoDecorrido > TempoDeMoveMax && !procurouAlvo) { if (!procurouAlvo) { if (focado) { alvoProcurado = focado.transform; } else { alvoProcurado = FindBestTarget.Procure(G, new string[1] { "Criature" }, 100); } } //alvoProcurado = CriaturesPerto.procureUmBomAlvo(G, 100); if (alvoProcurado) { if (Vector3.SqrMagnitude( Vector3.ProjectOnPlane(G.transform.position - alvoProcurado.position, Vector3.up)) < 25) { alvoProcurado = null; } } procurouAlvo = true; Debug.Log("Sobre voo, alvo procurado: " + alvoProcurado); } if (tempoDecorrido > TempoDeMoveMax && tempoDecorrido < TempoDeDestroy) { //if (!procurouAlvo) // alvoProcurado = CriaturesPerto.procureUmBomAlvo(G, 100); if (!addView) { AttackColliders.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); } }