public void ImpatoAtivo(GameObject G, IGolpeBase ativa, CaracteristicasDeImpacto caracteristica) { tempoDecorrido += Time.deltaTime; if (!procurouAlvo) { alvoProcurado = CriaturesPerto.procureUmBomAlvo(G); procurouAlvo = true; Debug.Log(alvoProcurado + " esse é o alvo"); ajudaAtaque(alvoProcurado, G.transform); } if (!addView) { tempoDecorrido += ativa.TempoDeMoveMin; ColisorDeGolpe.AdicionaOColisor(G, ativa, caracteristica, tempoDecorrido); addView = true; } if (tempoDecorrido < ativa.TempoDeMoveMax) { if (((int)(tempoDecorrido * 10)) % 2 == 0 && alvoProcurado) { ajudaAtaque(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, 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 UpdateGolpe(GameObject G) { tempoDecorrido += Time.deltaTime; if (tempoDecorrido < TempoDeMoveMax) { if (!controle) { controle = G.GetComponent <CharacterController>(); } controle.Move(Vector3.up * velocidadeSubindo * Time.deltaTime); } if (tempoDecorrido > TempoDeMoveMax && tempoDecorrido < TempoDeDestroy) { if (!procurouAlvo) { alvoProcurado = acaoDeGolpeRegenerate.procureUmBomAlvo(G, 100); } if (!addView) { ColisorDeGolpe.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); } }