public static void InsereAtaque(Vector3 partida, Vector3 chegada, float altura, GameObject dono, int forca) { //Debug.Log(partida + " : " + chegada + " : " + Screen.width + " : " + Screen.height); bool foi = true; PosNoMapa posM = MelhoraInstancia.TelaParaMundo3D(partida); foi = posM.estaNoMapa; partida = posM.pos; posM = MelhoraInstancia.TelaParaMundo3D(chegada); foi &= posM.estaNoMapa; chegada = posM.pos; if (foi) { partida = new Vector3(partida.x, altura, partida.z); chegada = new Vector3(chegada.x, altura, chegada.z); Elementos elemento; if (UnityEngine.SceneManagement.SceneManager.GetActiveScene().name != "Tutorial") { switch (ControladorGlobal.c.DadosGlobais.PerfilAtualSelecionado.PersonagemAtualSelecionado.Bonus) { case BonusDePersonagem.maisAtaque: elemento = Elementos.cuboMaisAtaque; break; case BonusDePersonagem.esferasDeFogo: elemento = Elementos.cuboEmChamas; break; default: elemento = Elementos.cuboColisor; break; } } else { elemento = Elementos.cuboColisor; } Transform T = MonoBehaviour.Instantiate(ControladorDeJogo.c.RetornaElemento(elemento)).transform; AplicadorDeDano apD = T.GetComponent <AplicadorDeDano>(); apD.dono = dono; apD.dano = forca; T.rotation = Quaternion.LookRotation(chegada - partida); T.position = 0.5f * (chegada + partida); T.localScale = new Vector3(elemento == Elementos.cuboMaisAtaque? 10:5, 1, 0.75f * (chegada - partida).magnitude); MonoBehaviour.Destroy(T.gameObject, 0.25f); } }
PosNoMapa DistanciaNoMapa(Vector3 final) { bool foi = true; PosNoMapa posM = MelhoraInstancia.TelaParaMundo3D(Vector3.zero); Vector3 inicial = posM.pos; foi &= posM.estaNoMapa; posM = MelhoraInstancia.TelaParaMundo3D(final); final = posM.pos; foi &= posM.estaNoMapa; return(new PosNoMapa() { pos = final - inicial, estaNoMapa = foi }); }
void bUpdate() { bool foi = false; float distanciaAlvo; Vector3 dir = Vector3.zero; PosNoMapa pos = new PosNoMapa(); for (int i = 0; i < itens.Length; i++) { foi = false; distanciaAlvo = Random.Range(distanciaMin, distanciaMax); if (itens[i].VerificaNovoSpawn()) { int cont = 0; while (!foi && cont < 100) { cont++; dir = Vector3.ProjectOnPlane(Random.insideUnitSphere, Vector3.up).normalized; dir *= distanciaAlvo; dir = MelhoraInstancia.PosEmparedado(heroi.position + dir, heroi.position); pos = MelhoraInstancia.EstaNoMapa(dir); if (Vector3.Distance(heroi.position, pos.pos) > distanciaAlvo - 1) { foi = pos.estaNoMapa; } } if (foi) { GameObject G = ControladorDeJogo.c.RetornaElemento( (Elementos)System.Enum.Parse(typeof(Elementos), itens[i].Nome.ToString()) ); G = (GameObject)MonoBehaviour.Instantiate(G, pos.pos + 1.5f * Vector3.up, G.transform.rotation); if (itens[i].Nome == NomeItem.estrelaDeCristal) { EstrelaDeCristal.EstrelasEmCampo.Add(G); } } } } }