void EntrarNaFraseAgradecer() { estado = EstadoDaqui.fraseAgradecer; BtnsManager.DesligarBotoes(gameObject); DisparaTexto dispara = GameController.g.HudM.DisparaT; ActionManager.ModificarAcao(transform, null); dispara.ReligarPaineis(); dispara.Dispara(comprar ? BancoDeTextos.RetornaListaDeTextoDoIdioma(ChaveDeTexto.frasesDeShoping)[2] : BancoDeTextos.RetornaListaDeTextoDoIdioma(ChaveDeTexto.frasesDeShoping)[3]); }
void VerifiqueAtivacao() { if (Vector3.Distance(transform.position, GameController.g.Manager.transform.position) < disAtivacao) { estado = EstadoDaqui.padrao; Invoke("VerifiqueConstancia", 1); Invoke("TelegrafaTiro", 1.75f); } else { Invoke("VerifiqueAtivacao", 1); } }
void OnReceivedTriggerInfo(IGameEvent e) { StandardSendGameEvent ssge = (StandardSendGameEvent)e; if (ssge.Sender.transform.IsChildOf(transform.parent) && estado == EstadoDaqui.escondido) { if (((Collider2D)ssge.MyObject[0]).tag == "Player") { estado = EstadoDaqui.aparecendo; Destroy(Instantiate(particula, transform.position, Quaternion.identity), 5); EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, s, .5f)); } } }
public void BtnComprar() { if (estado == EstadoDaqui.mudandoOpcao) { if (EssaLoja.VerifiqueCompra()) { } else { GlobalController.g.UmaMensagem.ConstroiPainelUmaMensagem(RetornoDeMensagem, "Você não tem dinheiro suficiente"); } estado = EstadoDaqui.mensagemSuspensa; } }
void OnChangeOption(IGameEvent e) { StandardSendGameEvent ssge = (StandardSendGameEvent)e; if ((string)ssge.MyObject[0] == "disponivel") { if (!(bool)ssge.MyObject[1]) { int I = (int)ssge.MyObject[2]; ColocaInfoTexts(dj.MeusEmblemas[I]); } else { if (dj.MeusEmblemas.Count > 0) { emblemasD.RetirarDestaques(); } emblemasE.ColocarDestaqueNoSelecionado(); estado = EstadoDaqui.sobreEncaixes; ColocaInfoTexts(Emblema.VerificarOcupacaoDoEncaixe(dj.MeusEmblemas, emblemasE.OpcaoEscolhida)); } } else if ((string)ssge.MyObject[0] == "encaixes") { if (!(bool)ssge.MyObject[1]) { int I = (int)ssge.MyObject[2]; ColocaInfoTexts(Emblema.VerificarOcupacaoDoEncaixe(dj.MeusEmblemas, I)); } else { estado = EstadoDaqui.sobreDisponiveis; emblemasE.RetirarDestaques(); if (dj.MeusEmblemas.Count > 0) { emblemasD.ColocarDestaqueNoSelecionado(); ColocaInfoTexts(dj.MeusEmblemas[emblemasD.OpcaoEscolhida]); } else { InfoDeNaoTemEmblema(); } } } }
void ComunsDeImpactoChao() { _Animator.SetTrigger(AnimKey.tocouChao.ToString()); estado = EstadoDaqui.emEspera; new MyInvokeMethod().InvokeNoTempoDeJogo(gameObject, IniciaBoss , tempoAposTocarChao); _Animator.SetTrigger(AnimKey.tocouChaoParaPadrao.ToString()); InstanciaLigando.Instantiate(downArrowGroundParticles, transform.position + 2 * Vector3.down, 5); EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, SoundEffectID.pedrasQuebrando)); EventAgregator.Publish(new StandardSendGameEvent(EventKey.requestShakeCam, ShakeAxis.x, 5, 2f)); }
void FinalizarMenuDepause() { estado = EstadoDaqui.emEspera; FinalizarTodasAsAbas(); Time.timeScale = 1; containerDoMenuDePause.SetActive(false); mapPanel.OnUnpausedGame(); EventAgregator.Publish(new StandardSendGameEvent(EventKey.exitPause, estadoAoPausar)); EventAgregator.Publish(new StandardSendGameEvent(EventKey.requestShowControllers)); EventAgregator.RemoveListener(EventKey.returnToMainMenu, OnReturnToMainMenu); EventAgregator.RemoveListener(EventKey.triedToChangeEmblemNoSuccessfull, OnTriedEmblem); EventAgregator.RemoveListener(EventKey.requestReturnToEmblemMenu, OnRequestEmblemMenu); }
private void EscolhaDeViagem(int qual) { estado = EstadoDaqui.emEspera; CapsuleInfo cI = myKeys.ListaDeCapsulas.GetActiveCapsules()[qual]; if (StaticMudeCena.EstaCenaEstaCarregada(cI.Cena)) { GlobalController.g.FadeV.IniciarFadeOutComAction(FakeFadeOut); Time.timeScale = 0; } else { infoSend = cI; GlobalController.g.FadeV.IniciarFadeOutComAction(OnFadeOut); } }
public static void PrepareInterstial() { if (estado == EstadoDaqui.emEspera) { Debug.Log("preparando"); interstial = new InterstitialAd(adUnitId); AdRequest request = new AdRequest.Builder() .AddTestDevice("AQZ9WOLB9LF6FYCI") .Build(); interstial.LoadAd(request); // prepara o listener para quando o banner estiver completamente interstial.OnAdLoaded += OnAdLoadedInterstial; interstial.OnAdFailedToLoad += OnInterstialLoadFailed; estado = EstadoDaqui.preparando; } }
void OnBasicPauseOptionSelect(int option) { switch (option) { case 0: FinalizarMenuDepause(); break; case 1: estado = EstadoDaqui.menuDeOpcoesAberto; menuO.gameObject.SetActive(true); break; case 2: GlobalController.g.FadeV.IniciarFadeOutComAction(OnFadeOutComplete); break; } }
private void OnReceiveTriggerInfo(IGameEvent obj) { StandardSendGameEvent ssge = (StandardSendGameEvent)obj; if (ssge.Sender.transform.IsChildOf(transform) && estado == EstadoDaqui.emEspera) { if (((Collider2D)ssge.MyObject[0]).tag == "Player") { doHeroi = GameController.g.Manager.transform; estado = EstadoDaqui.buscadorDeAcao; EventAgregator.Publish(new StandardSendGameEvent(EventKey.changeMusicWithRecovery, new NameMusicaComVolumeConfig() { Musica = NameMusic.miniBoss, Volume = 1 })); } } }
void PosCoolDown() { if (estado == EstadoDaqui.emCoolDown) { if (!VerifiqueAtkEspecial()) { int sorteio = Random.Range(0, 5); BossAttack b = (BossAttack)sorteio; //Debug.Log("numero de sorteio: "+sorteio+" enum bossAttack: "+b+" : "+estado); switch (b) { case BossAttack.descidaReta: new MyInvokeMethod().InvokeNoTempoDeJogo(gameObject, IniciarDescidaReta, intervaloDeTeleport); break; case BossAttack.diagonal: new MyInvokeMethod().InvokeNoTempoDeJogo(gameObject, IniciarDescidaDiagonal, intervaloDeTeleport); break; case BossAttack.magiaSimples: new MyInvokeMethod().InvokeNoTempoDeJogo(gameObject, PreparMagiaSimples, intervaloDeTeleport); break; case BossAttack.magiaMultipla: cont = 0; new MyInvokeMethod().InvokeNoTempoDeJogo(gameObject, PreparaMagiaMultipla, intervaloDeTeleport); break; case BossAttack.dash: new MyInvokeMethod().InvokeNoTempoDeJogo(gameObject, IniciaDash, intervaloDeTeleport); break; } InvocaTeleportProps(false); estado = EstadoDaqui.atacando; } else { IniciarAtkEspecial(); } //Debug.Log("estado: " + estado); } }
void VerificaMais(int tanto) { if (comprar) { if ((quantidade + tanto) * esseItem.Valor > dados.Cristais && dados.Cristais >= esseItem.Valor) { DesligaBotoes(); estado = EstadoDaqui.emEspera; GameController.g.HudM.UmaMensagem.ConstroiPainelUmaMensagem(ReligarBotoes, string.Format(textos[7], dados.Cristais / esseItem.Valor, MbItens.NomeEmLinguas(esseItem.ID)) ); AtualizaQuantidade(Mathf.Max(dados.Cristais / esseItem.Valor, 1), esseItem.Valor); } else if (dados.Cristais < esseItem.Valor) { DesligaBotoes(); estado = EstadoDaqui.emEspera; GameController.g.HudM.UmaMensagem.ConstroiPainelUmaMensagem(ReligarBotoes, string.Format(textos[11], dados.Cristais / esseItem.Valor, MbItens.NomeEmLinguas(esseItem.ID)) ); AtualizaQuantidade(1, esseItem.Valor); } else { AtualizaQuantidade(quantidade + tanto, esseItem.Valor); } } else { if (quantidade + tanto > dados.TemItem(esseItem.ID)) { DesligaBotoes(); estado = EstadoDaqui.emEspera; GameController.g.HudM.UmaMensagem.ConstroiPainelUmaMensagem(ReligarBotoes, string.Format(textos[8], dados.TemItem(esseItem.ID), MbItens.NomeEmLinguas(esseItem.ID)) ); AtualizaQuantidade(dados.TemItem(esseItem.ID), Mathf.Max(1,esseItem.Valor / 4)); } else { AtualizaQuantidade(quantidade + tanto, Mathf.Max(1, esseItem.Valor / 4)); } } }
void Update() { //Debug.Log(estado+" : "+ (MovePoints[MoveTarget].position - transform.position)+" : "+ (Vector3.ProjectOnPlane((MovePoints[MoveTarget].position - transform.position).normalized, Vector3.up))); switch (estado) { case EstadoDaqui.movendo: UpdateMovendo(); break; case EstadoDaqui.preparandoInvestida: TempoDecorrido += Time.deltaTime; if (TempoDecorrido > TEMPO_DA_PAUSA_DA_INVESTIDA) { Acelerar(); estado = EstadoDaqui.investindo; } break; case EstadoDaqui.investindo: UpdateAcelerando(); break; case EstadoDaqui.esperandoMove: TempoDecorrido += Time.deltaTime; if (TempoDecorrido > TempoEsperando) { estado = EstadoDaqui.movendo; } break; case EstadoDaqui.finalizandoInvestida: TempoDecorrido += Time.deltaTime; if (TempoDecorrido > TempoEsperando) { estado = EstadoDaqui.movendo; } break; } PositionChangeWithAndador(); }
/* * protected void OnReceivedTriggerInfo(IGameEvent e) * { * if (e.Sender.transform.IsChildOf(transform)) * { * StandardSendGameEvent ssge = (StandardSendGameEvent)e; * Collider2D collision = (Collider2D)ssge.MyObject[0]; * //OnTriggerEnter2D(collision); * } * }*/ private void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.layer == 8 || collision.gameObject.layer == 12) { redirecionador = multiplicadorDoRedirecionamento * collision.contacts[0].normal; if (estado == EstadoDaqui.investindo) { estado = EstadoDaqui.animandoColisao; _Animator.SetTrigger("colidiu"); EventAgregator.Publish(new StandardSendGameEvent(gameObject, EventKey.request3dSound, SoundEffectID.Break)); new MyInvokeMethod().InvokeNoTempoDeJogo(gameObject, () => { estado = EstadoDaqui.perseguindo; transform.rotation = Quaternion.identity; }, TEMPO_COLIDINDO); } } }
void VerificadorDeDistancia() { if (Vector2.Distance(transform.position, doHeroi.position) < distanciaDeAparecer && Vector2.Distance(transform.position, doHeroi.position) > proximoDeMais ) { if (estado == EstadoDaqui.emEspera) { ShowHideEnemy(true); } estado = EstadoDaqui.preparandoTiro; tempoDecorrido = 0; } else { Invoke("VerificadorDeDistancia", 1); } }
public void IniciarEssaHud(MbItens itemAlvo, bool comprar = true) { this.comprar = comprar; BtnsManager.ReligarBotoes(gameObject); ActionManager.ModificarAcao(transform, BotaoComprar); estado = EstadoDaqui.botoesAtivos; gameObject.SetActive(true); esseItem = itemAlvo; dados = GameController.g.Manager.Dados; quantidade = 1; labelCristais.text = textos[0] + dados.Cristais; mensagem.text = string.Format(comprar ? textos[3] : textos[4], MbItens.NomeEmLinguas(itemAlvo.ID)); infos.text = BancoDeTextos.RetornaListaDeTextoDoIdioma(ChaveDeTexto.shopInfoItem)[(int)(itemAlvo.ID)]; quantidadeTXt.text = (comprar)?quantidade.ToString():quantidade+" / "+ dados.TemItem(esseItem.ID); valorAPagar.text = (itemAlvo.Valor / (comprar ? 1 : 4)).ToString(); labelValorAPagar.text = comprar ? textos[1] : textos[2]; labelDoBotaoComprar.text = comprar ? textos[5] : textos[6]; }
private void Update() { switch (estado) { case EstadoDaqui.movendo: UpdateMovendo(); break; case EstadoDaqui.esperandoMove: TempoDecorrido += Time.deltaTime; if (TempoDecorrido > TempoEsperando) { estado = EstadoDaqui.movendo; } break; case EstadoDaqui.preparando: TempoDecorrido += Time.deltaTime; if (TempoDecorrido > TEMPO_TELEGRAFANDO) { Acelerar(); estado = EstadoDaqui.investindo; } break; case EstadoDaqui.investindo: UpdateAcelerando(); break; case EstadoDaqui.finalizando: TempoDecorrido += Time.deltaTime; if (TempoDecorrido > TempoEsperando) { estado = EstadoDaqui.movendo; } break; } PositionChangeWithAndador(); }
void OnReceivedAnimationPoint(IGameEvent e) { if (e.Sender == gameObject) { StandardSendGameEvent ssge = (StandardSendGameEvent)e; string info = (string)ssge.MyObject[1]; switch (info) { case "a": break; case "b": int random = Random.Range(0, 3); if (random < 2) { _Animator.SetTrigger("retornaAoPadrao"); estado = EstadoDaqui.buscadorDeAcao; tempoDecorrido = 0; } else { _Animator.SetTrigger("espadadaDois"); } break; case "c": _Animator.SetTrigger("retornaAoPadrao"); estado = EstadoDaqui.buscadorDeAcao; tempoDecorrido = 0; break; case "e": mov.ApplyForce(forDesl * Mathf.Sign(-transform.localScale.x) * Vector3.right, 1); EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, SoundEffectID.EnemySlash)); break; } } }
void OnReceivedTriggerInfo(IGameEvent e) { StandardSendGameEvent ssge = (StandardSendGameEvent)e; //Debug.Log(ssge.Sender.name+" : "+estado); if (ssge.Sender.transform.IsChildOf(transform)) { Collider2D c = (Collider2D)ssge.MyObject[0]; if (ssge.Sender.name == "triggerAcionador" && estado == EstadoDaqui.emEspera && Time.time - ultimaMordida > intervaloEntreMordidas) { estado = EstadoDaqui.telegrafando; InstanciaLigando.Instantiate(particulaDoInicio, transform.position, 5); EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, SoundEffectID.Fire1)); _Animator.SetTrigger("telegrafar"); new MyInvokeMethod().InvokeNoTempoDeJogo(gameObject, PosTelegrafar, tempoTelegrafando); } else if (ssge.Sender.name == "mordedorEscondido") { VerificadorDeDano(c); } } }
void CheckAnimationPoint(IGameEvent e) { if (e.Sender == gameObject) { StandardSendGameEvent ssge = (StandardSendGameEvent)e; string info = (string)ssge.MyObject[1]; switch (info) { case "a": case "b": case "c": Mov.ApplyForce(forDesl * Mathf.Sign(-transform.localScale.x) * Vector3.right, 1); EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, SoundEffectID.EnemySlash)); break; case "d": TempoDecorrido = 0; _Animator.SetTrigger("retornarAoPadrao"); estado = EstadoDaqui.movendo; break; } } }
private void OnTriggerEnter2D(Collider2D collision) { if (collision.tag == "attackCollisor") { estado = EstadoDaqui.fade; tempoDecorrido = 0; myCollider.enabled = false; if (extraColliders != null) { for (int i = 0; i < extraColliders.Length; i++) { extraColliders[i].enabled = false; } } particulaDaAcao.SetActive(true); Destroy(particulaDaAcao, 5); EventAgregator.Publish(new StandardSendGameEvent(EventKey.requestChangeShiftKey, ID)); EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, SoundEffectID.fakeWall)); } }
void TelegrafaTiro() { if (gameObject != null) { Invoke("TelegrafaTiro", intervaloDeTiro); estado = EstadoDaqui.preparandoTiro; InstanciaLigando.Instantiate(particulaTelegrafista, transform.position, 5); EventAgregator.Publish(new StandardSendGameEvent(gameObject, EventKey.request3dSound, SoundEffectID.Wind1)); new MyInvokeMethod().InvokeNoTempoDeJogo(gameObject, () => { estado = EstadoDaqui.disparaTiro; Vector3[] dirs = new Vector3[4] { new Vector3(1, 1, 0), new Vector3(-1, 1, 0), new Vector3(1, -1, 0), new Vector3(-1, -1, 0) }; for (int i = 0; i < 4; i++) { GameObject G = InstanciaLigando.Instantiate(projetil, transform.position + distProjetilTransform * dirs[i], 5, Quaternion.LookRotation(-projetil.transform.forward, Vector3.Cross(dirs[i], -Vector3.forward)) ); ProjetilInimigo P = G.AddComponent <ProjetilInimigo>(); P.Iniciar(dirs[i], particulaTelegrafista, 10f); P.SomDeImpacto = SoundEffectID.lancaProjetilInimigo; new MyInvokeMethod().InvokeNoTempoDeJogo(gameObject, () => { estado = EstadoDaqui.padrao; }, tempoPosTiro); } }, tempoTelegrafando); } }
private void OnTriggerEnter2D(Collider2D collision) { if (collision.tag == "Player" && !iniciado) { if (UnicidadeDoPlayer.Verifique(collision)) { EventAgregator.Publish(new StandardSendGameEvent(EventKey.stopMusic)); EventAgregator.Publish(new StandardSendGameEvent(gameObject, EventKey.requestHeroPosition, posicionadorDoHeroi.position)); EventAgregator.Publish(new StandardSendGameEvent(gameObject, EventKey.requestChangeCamLimits, limitantes, changeCamLimitsTime)); EventAgregator.AddListener(EventKey.positionRequeredOk, OnHeroPositionOk); EventAgregator.AddListener(EventKey.limitCamOk, OnLimitCamOk); estado = EstadoDaqui.posicionandoHeroi_limitsCam; iniciado = true; for (int i = 0; i < barreiras.Length; i++) { barreiras[i].SetActive(true); InstanciaLigando.Instantiate(particulaDabarreira, barreiras[i].transform.position, 5); } } } }
void OnReceivedTriggerInfo(IGameEvent e) { if (transform.IsChildOf(e.Sender.transform) && estado == EstadoDaqui.emEspera) { float px = ((Collider2D)((StandardSendGameEvent)e).MyObject[0]).transform.position.x; bool foi = false; if (Mathf.Abs(ultimoInvestimento - Time.time) > intervaloDeInvestimento) { for (int i = 0; i < trajetorias.Length; i++) { float partida = trajetorias[i].partida.position.x; float chegada = trajetorias[i].chegada.position.x; //Debug.Log(Mathf.Abs(partida - px)+" : "+px +" : "+" : "+partida+" : "+chegada+" : "+(partida < px && px < chegada) +" : "+ (partida > px && chegada < px) +" : "+ (Mathf.Abs(partida - px) > disMin)+" : "+i); if (((partida < px && px < chegada) || (partida > px && chegada < px)) && (Mathf.Abs(partida - px) > disMin)) { indiceDoDeslocamento = i; foi = true; } } if (foi) { transform.position = trajetorias[indiceDoDeslocamento].partida.position; InstanciaLigando.Instantiate(particulaDoAparecimento, transform.position, 5); EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, SoundEffectID.aparicaoSurpresaDeInimigo)); estado = EstadoDaqui.telegrafando; tempoDecorrido = 0; FlipDirection.Flip(transform, trajetorias[indiceDoDeslocamento].partida.position.x - trajetorias[indiceDoDeslocamento].chegada.position.x); ChangeView(true); } } } }
void PosProjetil() { bool foi = false; if (Mathf.Abs(doHeroi.position.x - transform.position.x) > 1.1f * distanciaDeEspadada) { int random = Random.Range(0, 8); if (random > 0) { foi = true; } } if (foi) { IniciaProjetil(); } else { estado = EstadoDaqui.buscadorDeAcao; tempoDecorrido = 0; } }
// Update is called once per frame protected override void Update() { switch (estado) { case EstadoDaqui.aparecendo: TempoDecorrido += Time.deltaTime; Vector3 alvo = posOriginal + 0.15f * Vector3.right; Vector3 partida = posOriginal; float tempo = 10 * TempoDecorrido / TEMPO_TELEGRAFANDO_PULO - ((int)(10 * TempoDecorrido / TEMPO_TELEGRAFANDO_PULO)); if (((int)(10 * TempoDecorrido / TEMPO_TELEGRAFANDO_PULO)) % 2 == 0) { alvo = posOriginal; partida = posOriginal + 0.15f * Vector3.right; } transform.position = Vector3.Lerp(partida, alvo, tempo); if (TempoDecorrido > TEMPO_TELEGRAFANDO_PULO) { TempoDecorrido = 0; rotOriginal = transform.rotation; estado = EstadoDaqui.disparaPulo; } break; case EstadoDaqui.disparaPulo: TempoDecorrido += Time.deltaTime; Quaternion qAlvo = Quaternion.Euler(0, 0, zAngleTarget); if (TempoDecorrido < TEMPO_SUBINDO) { transform.position = Vector3.Lerp(posOriginal, posDoSalto.position, ZeroOneInterpolation.PolinomialInterpolation(TempoDecorrido / TEMPO_SUBINDO, 2)); transform.rotation = Quaternion.Lerp(rotOriginal, qAlvo, TempoDecorrido / TEMPO_SUBINDO); } else { PreviousMoveTarget = retornoAoChao.position; transform.rotation = qAlvo; TempoDecorrido = 0; estado = EstadoDaqui.descendoPulo; } break; case EstadoDaqui.descendoPulo: TempoDecorrido += Time.deltaTime; if (TempoDecorrido < TEMPO_DESCENDO) { transform.position = Vector3.Lerp(posDoSalto.position, retornoAoChao.position, ZeroOneInterpolation.PolinomialInterpolation(TempoDecorrido / TEMPO_DESCENDO, 2)); } else { transform.position = retornoAoChao.position; estado = EstadoDaqui.baseUpdate; } break; case EstadoDaqui.baseUpdate: FlipDirection.Flip(transform, zAngleTarget == 0 ? PreviousMoveTarget.x - MovePoints[MoveTarget].position.x : Mathf.Sign(zAngleTarget) * (PreviousMoveTarget.y - MovePoints[MoveTarget].position.y)); base.Update(); break; } }
void VerifiquePosicionamento() { int[] angulos = new int[9] { 0, 30, -30, 45, -45, 60, -60, 90, -90 }; int cont = 0; bool foi = false; Vector3 charPosition = GameController.g.Manager.transform.position; Vector3 baseDir = charPosition - transform.position; Vector3 posDeInteresse = Vector3.zero; while (cont < 9 && !foi) { Vector3 dir = Quaternion.AngleAxis(angulos[cont], Vector3.forward) * baseDir; RaycastHit2D hit = Physics2D.Raycast(transform.position, dir, 100, 511); if (hit) { /* * Debug.Log(cont+" raycast true "+hit.transform.name); * Instantiate(mark1, hit.point, Quaternion.identity); */ Vector3 thisPoint = hit.point; hit = Physics2D.Linecast(hit.point + 0.25f * hit.normal, charPosition, 511); if (!hit) { // Instantiate(transform.GetChild(0), thisPoint, Quaternion.identity); moveDir = (thisPoint - transform.position).normalized; foi = true; } else { moveDir = dir; /* * Debug.Log(cont + "licast true: " + hit.transform.name); * Instantiate(mark2, hit.point, Quaternion.identity);*/ } } else { hit = Physics2D.Linecast(transform.position, charPosition, 511); if (hit) { //Instantiate(transform.GetChild(0), charPosition, Quaternion.identity); moveDir = -dir; foi = true; } else { foi = false; } } cont++; } if (foi) { estado = EstadoDaqui.posicionandoParaAtirar; } else { moveDir = (transform.position - charPosition).normalized; estado = EstadoDaqui.posicionandoEvasivamente; Invoke("VerificaDistanciaDeAtivacao", TEMPO_EM_EVASIVA); } }
protected void RetornarParaEsperaZerandoTempo() { estado = EstadoDaqui.emEspera; tempoDecorrido = 0; VerifiquePosicionamento(); }
// Update is called once per frame void Update() { Vector3 charPos = default; if (GameController.g) { if (GameController.g.Manager) { charPos = GameController.g.Manager.transform.position; } } switch (estado) { case EstadoDaqui.emEspera: moveVel = Vector3.Lerp(moveVel, moveDir, TRANSICAO_DA_VELOCIDADE * Time.deltaTime); r2.velocity = VEL_MOVIMENTO * moveVel; FlipDirection.Flip(transform, moveVel.x); break; case EstadoDaqui.posicionandoParaAtirar: tempoDecorrido += Time.deltaTime; moveVel = Vector3.Lerp(moveVel, moveDir, TRANSICAO_DA_VELOCIDADE * Time.deltaTime); FlipDirection.Flip(transform, moveVel.x); r2.velocity = VEL_MOVIMENTO * moveVel; if (tempoDecorrido > INTERVALO_DE_TIRO) { RaycastHit2D hit = Physics2D.Linecast(transform.position, GameController.g.Manager.transform.position, 511); if (!hit) { tempoDecorrido = 0; estado = EstadoDaqui.telegrafando; Telegrafar(charPos); } else { moveDir = (transform.position - charPos).normalized; estado = EstadoDaqui.emEspera; tempoDecorrido = 0; Invoke("VerifiquePosicionamento", TEMPO_NA_ESPERA); } } break; case EstadoDaqui.telegrafando: tempoDecorrido += Time.deltaTime; moveVel = Vector3.Lerp(moveVel, Vector3.zero, TRANSICAO_DA_VELOCIDADE * Time.deltaTime); r2.velocity = moveVel; //FlipDirection.Flip(transform, moveVel.x); if (tempoDecorrido > TEMPO_TELEGRAFANDO) { RequestAction(charPos); } break; case EstadoDaqui.posicionandoEvasivamente: moveVel = Vector3.Lerp(moveVel, moveDir, TRANSICAO_DA_VELOCIDADE * Time.deltaTime); r2.velocity = VEL_MOVIMENTO * moveVel; FlipDirection.Flip(transform, moveVel.x); break; } }