public static void InsereAfastamento( Vector3 dirDeAfastamento, float distanciaDeAfastamento, float tempoDeAfastamento, GameObject oAfastado ) { AfastadorDeInimigoEmDano af = oAfastado.AddComponent <AfastadorDeInimigoEmDano>(); af.dirAfastamento = dirDeAfastamento; af.distanciaDeAfastamento = distanciaDeAfastamento; af.tempoDeAfastamento = tempoDeAfastamento; }
public void AfastaInimigoDeDano(Transform heroi) { GameObject[] inimigos = InimigoBase.InimigosPerto(distanciaMaxParaOAfastamento, heroi.position); foreach (GameObject I in inimigos) { AfastadorDeInimigoEmDano.InsereAfastamento( (Vector3.ProjectOnPlane(I.transform.position - heroi.position, Vector3.up)).normalized, distanciaDeAfastamento, tempoDeAfastamento, I ); } }
void ProcureObjetosPerto() { GameObject[] osPerto = InimigoBase.InimigosPerto(raioDeDano, transform.position); EstadoDePersonagem_Gerente T = GameObject.FindWithTag("Player").GetComponent <EstadoDePersonagem_Gerente>(); DadosDoPersonagem dados = T.Dados; float distancia = Vector3.Distance(T.transform.position, transform.position); if (distancia < raioDeDano) { T.AplicarDano(ValorDeDano(distancia, dados.G_XP.Nivel)); AfastamentoDeExplosaoParaHeroi afH = T.gameObject.AddComponent <AfastamentoDeExplosaoParaHeroi>(); afH.dirAfastamento = Vector3.ProjectOnPlane(T.transform.position - transform.position, Vector3.up).normalized; } foreach (GameObject I in osPerto) { AfastadorDeInimigoEmDano.InsereAfastamento( Vector3.ProjectOnPlane((I.transform.position - transform.position), Vector3.up).normalized, distanciaDeAfastamento, tempoDeAfastamento, I); I.GetComponent <InimigoBase>() .TomaDano(ValorDeDano(Vector3.Distance(I.transform.position, transform.position), dados.G_XP.Nivel), TipoDeDano.explosao); } }