// Use this for initialization void Start() { posAlvo = distanciaDeAfastamento * dirAfastamento + transform.position; posAlvo = MelhoraInstancia.PosEmparedado(posAlvo, transform.position); posAlvo = MelhoraInstancia.ProcuraPosNoMapa(posAlvo); R = GetComponent <Rigidbody>(); }
public static PetManager Initialize(PetName petName, int nivel, Vector3 pos) { PetBase P = new PetBase(petName, nivel); GameObject G = InstantiatePet(P, pos); G.transform.position = MelhoraInstancia.ProcuraPosNoMapa(G.transform.position); return(ConfigureCriatureBase(G, P)); }
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); } }
// Update is called once per frame void Update() { tempoDecorrido += Time.deltaTime; transform.position += dirAfastamento * distanciaAfastando * Time.deltaTime / tempoAfastando; if (tempoDecorrido > tempoAfastando) { transform.position = MelhoraInstancia.PosEmparedado(posInicial + dirAfastamento * distanciaAfastando, posInicial); GetComponent <EstadoDePersonagem_Gerente>().ApComandos.Mov.PararMovimento(); Destroy(this); } }
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); } } } } }
void SpawnarInimigo() { Vector3 onde = Vector3.zero; PosNoMapa p; bool noMapa = false; int cont = 0; while (!noMapa) { onde = Vector3.ProjectOnPlane(Random.insideUnitSphere, Vector3.up).normalized; onde = Random.Range(distanciaMinSpawn, distanciaMaxSpawn) * onde + heroi.position; cont++; p = MelhoraInstancia.EstaNoMapa(onde); noMapa = p.estaNoMapa; onde = p.pos; } GameObject G = MonoBehaviour.Instantiate(vorticeDeSpawn, onde, vorticeDeSpawn.transform.rotation); SelecionarInimigoSpawnado(G); inimigosEmCampo.Add(G); }
public bool AnimaEnvia( CriatureBase oInstanciado = null, string nomeDoGameObject = "") { tempoDecorrido += Time.deltaTime; switch (estadoEnvia) { case EstadoDoAnimaEnvia.iniciaAnimacao: tempoDecorrido = 0; animador.AnimaEnvia(); estadoEnvia = EstadoDoAnimaEnvia.animaEnvia; break; case EstadoDoAnimaEnvia.animaEnvia: if (tempoDecorrido > TEMPO_DA_ANIMA_ENVIA) { luz = ParticulasDeSubstituicao.InsereParticulaDaLuva(manager.gameObject, false); raio = ParticulasDeSubstituicao.InsereParticulaDoRaio(posCriature, manager.gameObject, false); estadoEnvia = EstadoDoAnimaEnvia.Instancia; tempoDecorrido = 0; } break; case EstadoDoAnimaEnvia.Instancia: if (tempoDecorrido > TEMPO_PARA_INSTANCIAR_CRIATURE) { if (oInstanciado == null && manager != null) { oInstanciado = manager.Dados.CriaturesAtivos[0]; } C = elementosDoJogo.el.retorna(oInstanciado.NomeID); posCriature = MelhoraInstancia.ProcuraPosNoMapa(posCriature); C = (GameObject)MonoBehaviour.Instantiate(C, posCriature, Quaternion.identity); C.transform.parent = elementosDoJogo.el.transform; if (nomeDoGameObject == "" && manager != null) { InicializadorDoJogo.InsereCriatureEmJogo(C, manager); } C.transform.localScale = new Vector3(0.01f, 0.01f, 0.01f); ParticulasDeSubstituicao.ParticulaSaiDaLuva(posCriature); tempoDecorrido = 0; estadoEnvia = EstadoDoAnimaEnvia.AumentaEscala; } break; case EstadoDoAnimaEnvia.AumentaEscala: if (C.transform.localScale.sqrMagnitude < 2.5f) { C.transform.localScale = Vector3.Lerp(C.transform.localScale, new Vector3(1, 1, 1), 4 * Time.deltaTime); C.transform.position = posCriature; } else { C.transform.localScale = new Vector3(1, 1, 1); estadoEnvia = EstadoDoAnimaEnvia.finalizaEnvia; tempoDecorrido = 0; } break; case EstadoDoAnimaEnvia.finalizaEnvia: if (tempoDecorrido < TEMPO_PARA_FINALISAR_RAIO) { ParticulasDeSubstituicao.ReduzVelocidadeDoRaio(raio); } else { MonoBehaviour.Destroy(raio); MonoBehaviour.Destroy(luz); return(false); } break; } return(true); }
public bool AnimaEnvia( CriatureBase oInstanciado = null, string nomeDoGameObject = "") { tempoDecorrido += Time.deltaTime; switch (estadoEnvia) { case EstadoDoAnimaEnvia.iniciaAnimacao: tempoDecorrido = 0; animador.AnimaEnvia(); estadoEnvia = EstadoDoAnimaEnvia.animaEnvia; break; case EstadoDoAnimaEnvia.animaEnvia: //if (tempoDecorrido > ((treinador)?TEMPO_DA_ANIMA_ENVIA_TREINADOR:TEMPO_DA_ANIMA_ENVIA)) AnimatorStateInfo A = oAnimado.GetComponent <Animator>().GetCurrentAnimatorStateInfo(0); if (A.IsName("enviaCriature") && A.normalizedTime >= 1) { luz = ParticulasDeSubstituicao.InsereParticulaDaLuva(oAnimado.gameObject, false); raio = ParticulasDeSubstituicao.InsereParticulaDoRaio(posCriature, oAnimado.gameObject, false); estadoEnvia = EstadoDoAnimaEnvia.Instancia; tempoDecorrido = 0; } break; case EstadoDoAnimaEnvia.Instancia: if (tempoDecorrido > TEMPO_PARA_INSTANCIAR_CRIATURE) { if (oInstanciado == null && !treinador) { oInstanciado = GameController.g.Manager.Dados.CriaturesAtivos[0]; } if (!treinador) { C = GameController.g.El.retorna(oInstanciado.NomeID); posCriature = MelhoraInstancia.ProcuraPosNoMapa(posCriature); C = (GameObject)MonoBehaviour.Instantiate(C, posCriature, Quaternion.identity); C.transform.parent = GameController.g.transform; } Debug.Log(nomeDoGameObject + " : " + treinador); if (nomeDoGameObject == "" && !treinador) { InicializadorDoJogo.InsereCriatureEmJogo(C, GameController.g.Manager); } else if (treinador) { Debug.Log("inimigo"); C = InsereInimigoEmCampo.RetornaInimigoEmCampo(oInstanciado).gameObject; posCriature = MelhoraInstancia.ProcuraPosNoMapa(posCriature); C.name = nomeDoGameObject != "" ? nomeDoGameObject : "Inimigo"; } C.transform.localScale = new Vector3(0.01f, 0.01f, 0.01f); ParticulasDeSubstituicao.ParticulaSaiDaLuva(posCriature); tempoDecorrido = 0; estadoEnvia = EstadoDoAnimaEnvia.AumentaEscala; } break; case EstadoDoAnimaEnvia.AumentaEscala: if (!treinador) { GameController.g.Manager.CriatureAtivo.GetComponent <UnityEngine.AI.NavMeshAgent>().enabled = false; } if (C.transform.localScale.sqrMagnitude < 2.5f) { C.transform.localScale = Vector3.Lerp(C.transform.localScale, new Vector3(1, 1, 1), 4 * Time.deltaTime); C.transform.position = posCriature; } else { C.transform.localScale = new Vector3(1, 1, 1); estadoEnvia = EstadoDoAnimaEnvia.finalizaEnvia; tempoDecorrido = 0; } break; case EstadoDoAnimaEnvia.finalizaEnvia: if (tempoDecorrido < TEMPO_PARA_FINALISAR_RAIO) { if (!treinador) { GameController.g.Manager.CriatureAtivo.GetComponent <UnityEngine.AI.NavMeshAgent>().enabled = true; } ParticulasDeSubstituicao.ReduzVelocidadeDoRaio(raio); } else { if (treinador) { animador.ResetaEnvia(); animador.ResetaTroca(); } MonoBehaviour.Destroy(raio); MonoBehaviour.Destroy(luz); return(false); } break; } return(true); }