protected override void Update() { tempoDecorrido += Time.deltaTime; transform.position = ZeroOneInterpolation.ParabolaDeDeslocamento( posInicial, Dir, vertice, tempoDecorrido / (Mathf.Abs(posInicial.x - Dir.x)) * Velocidade ); }
// Update is called once per frame void Update() { tempoDecorrido += Time.deltaTime; switch (estado) { case EstadoDaqui.movimentando: if (tempoDecorrido < loopTime) { float interpolation = //ZeroOneInterpolation.PolinomialInterpolation(tempoDecorrido / loopTime, 12); //ZeroOneInterpolation.RadicalOddInterpolation(tempoDecorrido / loopTime,3); ZeroOneInterpolation.LagrangeInterppolation(tempoDecorrido / loopTime, new Vector2(0.75f, 1), new Vector2(0.95f, 0.65f)); if (tempoDecorrido > 0f && !somUm) { doSomUm.Play(); somUm = true; } if (tempoDecorrido > 1.75f && !somDois) { doSomDois.Play(); somDois = true; } //Debug.Log(interpolation + " : " + (tempoDecorrido / loopTime)); transform.position = Vector3.Lerp(posAuxGuardada, pos[indiceDaPos].position, interpolation ); } else { estado = EstadoDaqui.esperando; tempoDecorrido = 0; somUm = false; somDois = false; } break; case EstadoDaqui.esperando: if (tempoDecorrido > standTime) { tempoDecorrido = 0; indiceDaPos = ContadorCiclico.AlteraContador(1, indiceDaPos, pos.Length); posAuxGuardada = transform.position; estado = EstadoDaqui.movimentando; } break; } }
void EscalonaSprite() { interestObject.transform.localScale = Vector3.Lerp(interestVector3, new Vector3(1000, 1000, 100), tempoDecorrido / TEMPO_ESCALONANDO_SPRITE); Color C = meuSprite.color; meuSprite.color = new Color(C.r, C.g, C.b, Mathf.Lerp(1, 0, ZeroOneInterpolation.PolinomialInterpolation( tempoDecorrido / TEMPO_ESCALONANDO_SPRITE, 4))); }
// 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; } }
// Update is called once per frame void Update() { switch (estado) { case EstadoDaqui.emDescidaReta: tempoDecorrido += Time.deltaTime; transform.position = Vector3.Lerp(posInicial, posFinal, ZeroOneInterpolation.PolinomialInterpolation(tempoDecorrido / distanciaEntrePontos * velDescida, 2) ); if (tempoDecorrido >= distanciaEntrePontos / velDescida) { ComunsDeImpactoChao(); downArrow.SetActive(false); } break; case EstadoDaqui.diagonal: tempoDecorrido += Time.deltaTime; transform.position = Vector3.Lerp(posInicial, posFinal, ZeroOneInterpolation.PolinomialInterpolation(tempoDecorrido / distanciaEntrePontos * velDescida, 2) ); if (tempoDecorrido >= distanciaEntrePontos / velDescida) { colliderNormal.enabled = true; colliderDash.enabled = false; ComunsDeImpactoChao(); diagonalDownArrow.SetActive(false); } break; case EstadoDaqui.executandoMagiaMultipla: tempoDecorrido += Time.deltaTime; transform.position = Vector3.Lerp(posInicial, posFinal, ZeroOneInterpolation.PolinomialInterpolation(tempoDecorrido / distanciaEntrePontos * velDescida, 2) ); if (tempoDecorrido >= distanciaEntrePontos / velDescida) { _Animator.SetTrigger(AnimKey.magia.ToString()); tempoDecorrido = 0; estado = EstadoDaqui.preparandoMagiaMultipla; } break; case EstadoDaqui.dash: tempoDecorrido += Time.deltaTime; transform.position = Vector3.Lerp(posInicial, posFinal, ZeroOneInterpolation.PolinomialInterpolation(tempoDecorrido / distanciaEntrePontos * velDash, 2) ); if (tempoDecorrido >= distanciaEntrePontos / velDash) { colliderDash.enabled = false; colliderNormal.enabled = true; estado = EstadoDaqui.emEspera; _Animator.SetTrigger(AnimKey.saiuDoDash.ToString()); particulaDoDash.SetActive(false); new MyInvokeMethod().InvokeNoTempoDeJogo(gameObject, IniciaBoss, tempoAposDash); } break; } }
// Update is called once per frame void Update() { if (estado != EstadoDaqui.emEspera) { tempoDecorrido += Time.deltaTime; BaseMoveRigidbody.PositionWithAndador(andador, transform); } switch (estado) { case EstadoDaqui.pulinhosPreparatorios: #region pulinhosPreparatorios if (VerifiqueContFurias()) { _Animator.SetTrigger("queda"); InstanciaLigando.Instantiate(particulaEnfaseDoBoss, transform.position, 5); EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, gritoDaFuria)); EventAgregator.Publish(EventKey.abriuPainelSuspenso, null); estado = EstadoDaqui.prepararGiroDeFuria; } else if (tempoDecorrido > TEMPO_ENTRE_PULINHO && contDePulinhos < PULINHOS_ATE_ATAQUE) { int qual = Random.Range(0, uhuhah.Length); EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, uhuhah[qual])); _Animator.SetTrigger("preparaPulo"); estado = EstadoDaqui.preparaPulinho; tempoDecorrido = 0; } else if (tempoDecorrido > TEMPO_ENTRE_PULINHO && contDePulinhos >= PULINHOS_ATE_ATAQUE) { int qual = Random.Range(0, 2); if (qual == 0) { InstanciaLigando.Instantiate( particulaDoAtaqueAlto, particulaDoAtaqueAlto.transform.position, 5, Quaternion.identity); estado = EstadoDaqui.giroAlto; PreparaParabolaLocal(); } else if (qual == 1) { EscolheDestino(); InstanciaLigando.Instantiate(particulaDoAtaqueReto, particulaDoAtaqueReto.transform.position, 5); estado = EstadoDaqui.giroReto; } else { Debug.Log("numero não esperado: " + qual); } EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, urroDeAtaque)); tempoDecorrido = 0; } #endregion break; case EstadoDaqui.prepararGiroDeFuria: #region preparandoGiroFuria if (tempoDecorrido > TEMPO_PREPARANDO_FURIA) { _Animator.SetTrigger("tocouChao"); EventAgregator.Publish(EventKey.fechouPainelSuspenso); EscolheMelhorCantoAlto(); estado = EstadoDaqui.giroDeFuria; tempoDecorrido = 0; contDePulinhos = 0; indice = 0; mov.ChangeGravityScale(0); } #endregion break; case EstadoDaqui.giroDeFuria: #region giroFuria andador.position = Vector3.Lerp(posInicial, targets[indice], velocidadeGiroFuria * tempoDecorrido / distancia); transform.Rotate(new Vector3(0, 0, 20)); if (tempoDecorrido * velocidadeGiroFuria > distancia) { EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, SoundEffectID.pedrasQuebrando)); EventAgregator.Publish(new StandardSendGameEvent(EventKey.requestShakeCam, ShakeAxis.z, 5, 2f)); tempoDecorrido = 0; posInicial = targets[indice]; indice = ContadorCiclico.AlteraContador(1, indice, 4); contDePulinhos++; } if (contDePulinhos >= 19) { _Animator.SetTrigger("retornaAoPadrao"); FinalizaGiro(); } #endregion break; case EstadoDaqui.giroReto: #region giroReto if (tempoDecorrido > TEMPO_TELEGRAFANDO_GIRO + TEMPO_GIRO_ALTO) { FinalizaGiro(); //mov.AplicadorDeMovimentos(Vector3.zero); } else if (tempoDecorrido > TEMPO_TELEGRAFANDO_GIRO) { float time = (tempoDecorrido - TEMPO_TELEGRAFANDO_GIRO) / TEMPO_GIRO_ALTO; transform.Rotate(new Vector3(0, 0, 20)); andador.position = Vector3.Lerp(posInicial, target, ZeroOneInterpolation.PolinomialInterpolation(time, 2)); } #endregion break; case EstadoDaqui.giroAlto: #region giroAlto if (tempoDecorrido > TEMPO_TELEGRAFANDO_GIRO + TEMPO_GIRO_ALTO) { FinalizaGiro(); //mov.AplicadorDeMovimentos(Vector3.zero); } else if (tempoDecorrido > TEMPO_TELEGRAFANDO_GIRO) { float time = (tempoDecorrido - TEMPO_TELEGRAFANDO_GIRO) / TEMPO_GIRO_ALTO; transform.Rotate(new Vector3(0, 0, 20)); andador.position = ZeroOneInterpolation.ParabolaDeDeslocamento( new Vector2(posInicial.x, posInicial.y), new Vector2(target.x, target.y), new Vector2(vertice.position.x, vertice.position.y), ZeroOneInterpolation.OddPolynomialInterpolation(time, 3)); //Debug.Log(target.x+" : "+posInicial.x); } #endregion break; case EstadoDaqui.preparaPulinho: #region preparaPulinhos if (tempoDecorrido > TEMPO_PREPARANDO_PULINHO) { mov.JumpForce(); _Animator.SetTrigger("disparaPulo"); tempoDecorrido = 0; contDePulinhos++; estado = EstadoDaqui.atualizaPulinho; } #endregion break; case EstadoDaqui.atualizaPulinho: #region atualizaPulinhos if (tempoDecorrido > TEMPO_NO_PULINHO) { if (requisicaoDeEspinhos) { lancados = new EspinhosDoCirculoImperfeito[conjuntoDeEspinhos.childCount]; for (int i = 0; i < conjuntoDeEspinhos.childCount; i++) { GameObject G = InstanciaLigando.Instantiate(conjuntoDeEspinhos.GetChild(i).gameObject, conjuntoDeEspinhos.GetChild(i).position, 10); lancados[i] = G.GetComponent <EspinhosDoCirculoImperfeito>(); } _Animator.SetTrigger("retornaAoPadrao"); _Animator.SetTrigger("queda"); EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, preparaEspinhos)); estado = EstadoDaqui.preparaEspinhos; requisicaoDeEspinhos = false; } else { _Animator.SetTrigger("retornaAoPadrao"); estado = EstadoDaqui.pulinhosPreparatorios; } tempoDecorrido = 0; } #endregion break; case EstadoDaqui.preparaEspinhos: #region preparaEspinhos if (tempoDecorrido > TEMPO_PREPARANDO_ESPINHOS) { EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, lancaEspinhos)); _Animator.SetTrigger("tocouChao"); mov.JumpForce(); tempoDecorrido = 0; estado = EstadoDaqui.lancaEspinhos; } #endregion break; case EstadoDaqui.lancaEspinhos: #region lancaEspinhos if (tempoDecorrido > TEMPO_PARA_LANCAR_ESPINHOS) { _Animator.SetTrigger("retornaAoPadrao"); for (int i = 0; i < lancados.Length; i++) { lancados[i].circulo.SetActive(false); lancados[i].espinhos.SetActive(true); lancados[i].particulaDosEspinhos.SetActive(true); } estado = EstadoDaqui.pulinhosPreparatorios; tempoDecorrido = 0; } #endregion break; } }
// Update is called once per frame void Update() { switch (estado) { case EstadoDaqui.caindoBoss: TempoDecorrido += Time.deltaTime; if (TempoDecorrido < TEMPO_QUEDA_BOSS) { boss.transform.position = Vector3.Lerp( posInicial, posDeDeslinicialDoBoss.position, ZeroOneInterpolation.PolinomialInterpolation(TempoDecorrido / TEMPO_QUEDA_BOSS, 8)); } else { EventAgregator.Publish(new StandardSendGameEvent(EventKey.requestShakeCam, ShakeAxis.z, 10, 2f)); EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, SoundEffectID.pedrasQuebrando)); boss.transform.position = posDeDeslinicialDoBoss.position; boss._Animator.SetTrigger("tocouChao"); estado = EstadoDaqui.animaIntimidacao; TempoDecorrido = 0; } break; case EstadoDaqui.particulaDaIntimidacao: TempoDecorrido += Time.deltaTime; if (TempoDecorrido > 0.25f) { InstanciaLigando.Instantiate(particulaEnfaseDoBoss, boss.transform.position, 5); EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, somEnfaseDoBoss)); EventAgregator.Publish(new StandardSendGameEvent(EventKey.requestLocalnameExibition, "O Grande Círculo Imperfeito", false, 2f)); new MyInvokeMethod().InvokeNoTempoDeJogo( () => { EventAgregator.Publish(new StandardSendGameEvent(EventKey.startMusic, new NameMusicaComVolumeConfig() { Musica = NameMusic.XPboss3, Volume = 1 } )); }, 1 ); estado = EstadoDaqui.gritando; TempoDecorrido = 0; } break; case EstadoDaqui.animaIntimidacao: TempoDecorrido += Time.deltaTime; if (TempoDecorrido > TEMPO_ATE_INTIMIDACAO) { TempoDecorrido = 0; boss._Animator.SetTrigger("preparaPulo"); estado = EstadoDaqui.particulaDaIntimidacao; } break; case EstadoDaqui.gritando: TempoDecorrido += Time.deltaTime; if (TempoDecorrido > TEMPO_GRITANDO) { boss._Animator.SetTrigger("retornaAoPadrao"); boss.IniciarBoss(); EventAgregator.Publish(EventKey.finalizaDisparaTexto, null); estado = EstadoDaqui.iniciaLuta; } break; } }