void Update() { switch (estado) { case EstadoDaqui.movendo: UpdateMovendo(); break; case EstadoDaqui.telegrafando: TempoDecorrido += Time.deltaTime; if (TempoDecorrido > tempoTelegrafando) { Mov.AplicadorDeMovimentos(DirecaoNoPlano.NoUpNormalizado(transform.position, GameController.g.Manager.transform.position)); estado = EstadoDaqui.atacando; TempoDecorrido = 0; _Animator.SetTrigger("espada"); } break; case EstadoDaqui.esperandoMove: TempoDecorrido += Time.deltaTime; if (TempoDecorrido > TempoEsperando) { estado = EstadoDaqui.movendo; } break; } PositionChangeWithAndador(); }
protected override void OnActionRequest() { _Animator.SetTrigger("preparar"); TempoDecorrido = 0; Mov.AplicadorDeMovimentos(DirecaoNoPlano.NoUpNormalizado(transform.position, GameController.g.Manager.transform.position)); Mov.AplicadorDeMovimentos(Vector3.zero); estado = EstadoDaqui.preparandoInvestida; }
protected override void OnReceivedDamageAmount(IGameEvent obj) { base.OnReceivedDamageAmount(obj); if (obj.Sender == gameObject && Dados.PontosDeVida > 0 && (estado == EstadoDaqui.movendo || estado == EstadoDaqui.esperandoMove)) { Mov.AplicadorDeMovimentos(DirecaoNoPlano.NoUpNormalizado(transform.position, GameController.g.Manager.transform.position)); OnActionRequest(); } }
void FinalizaGiro() { EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, SoundEffectID.pedrasQuebrando)); EventAgregator.Publish(new StandardSendGameEvent(EventKey.requestShakeCam, ShakeAxis.z, 10, 2f)); transform.rotation = Quaternion.identity; mov.ChangeGravityScale(5); mov.AplicadorDeMovimentos(-DirecaoNoPlano.NoUpNormalizado(transform.position, GameController.g.Manager.transform.position)); estado = EstadoDaqui.pulinhosPreparatorios; contDePulinhos = 0; tempoDecorrido = 0; }
void Update() { switch (estado) { case EstadoDaqui.movendo: UpdateMovendo(); break; case EstadoDaqui.telegrafando: TempoDecorrido += Time.deltaTime; if (TempoDecorrido > TEMPO_TELEGRAFANDO) { Mov.AplicadorDeMovimentos(DirecaoNoPlano.NoUpNormalizado(transform.position, GameController.g.Manager.transform.position)); estado = EstadoDaqui.borrifando; InstanciaLigando.Instantiate(particulaDoBorrifar, transform.position, 5); EventAgregator.Publish(new StandardSendGameEvent(gameObject, EventKey.request3dSound, SoundEffectID.Darkness4)); TempoDecorrido = 0; } break; case EstadoDaqui.esperandoMove: TempoDecorrido += Time.deltaTime; if (TempoDecorrido > TempoEsperando) { _Animator.SetTrigger("anda"); estado = EstadoDaqui.movendo; } break; case EstadoDaqui.borrifando: TempoDecorrido += Time.deltaTime; if (TempoDecorrido > TEMPO_DO_BORRIFAR_AO_DANO) { colisorDeDano.enabled = true; estado = EstadoDaqui.emEspera; new MyInvokeMethod().InvokeNoTempoDeJogo(() => { if (this != null) { _Animator.SetTrigger("retornarAoPadrao"); colisorDeDano.enabled = false; estado = EstadoDaqui.movendo; } }, .5f); } break; } PositionChangeWithAndador(); }
protected override void Start() { mov.Iniciar(andador); posOriginal = transform.position; EventAgregator.AddListener(EventKey.triggerInfo, OnReceiveTriggerInfo); EventAgregator.AddListener(EventKey.animationPointCheck, OnReceivedAnimationPoint); base.Start(); new MyInvokeMethod().InvokeAoFimDoQuadro(() => { mov.AplicadorDeMovimentos( DirecaoNoPlano.NoUpNormalizado(transform.position, GameController.g.Manager.transform.position)); }); }
void PosTelegrafarProjetil() { _Animator.SetTrigger("retornoDoProjetil"); GameObject G = InstanciaLigando.Instantiate(particulaDeAtaque, transform.GetChild(1).position, 15); ProjetilParabolico P = G.AddComponent <ProjetilParabolico>(); Vector3 posAlvo = transform.position + 0.7f * (DirecaoNoPlano.NoUp(transform.position, doHeroi.position)) + 2 * Vector3.down; P.Iniciar(posAlvo, new Vector2(0.5f * (transform.position.x + posAlvo.x), transform.position.y + 5), particulaTelegrafista, 15 ); }
public bool UpdateMove() { Vector3 dir = DirecaoNoPlano.NoUpNormalizado(dono.position, target); float distancia = Mathf.Abs(dono.position.x - target.x); float newVel = distancia > 0.5f?vel:vel * distancia; mov.AplicadorDeMovimentos(newVel * dir); if (distancia < 0.1f) { return(true); } return(false); }
void SpawnarMagia(Vector3 pos, Vector3 dir = default(Vector3)) { if (dir == default(Vector3)) { dir = DirecaoNoPlano.NoUpNormalizado(transform.position, HeroPosition); } GameObject G = InstanciaLigando.Instantiate(setaSombria, pos, 10); EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, SoundEffectID.lancaProjetilInimigo)); G.AddComponent <ProjetilInimigo>().IniciarProjetilInimigo(dir, particulaDoTeleport, velDaMagia, SoundEffectID.lancaProjetilInimigo); G.transform.rotation = Rotation2D.GetRotation(dir); }
// Update is called once per frame void Update() { switch (estado) { case EstadoDaqui.aproximandoSe: mov.AplicadorDeMovimentos( DirecaoNoPlano.NoUpNormalizado(transform.position, GameController.g.Manager.transform.position)); if (Mathf.Abs(doHeroi.position.x - transform.position.x) < 0.9f * distanciaDeEspadada) { estado = EstadoDaqui.buscadorDeAcao; } break; case EstadoDaqui.buscadorDeAcao: tempoDecorrido += Time.deltaTime; //FlipDirection.Flip(andador.transform,-transform.position.x + doHeroi.transform.position.x); if (doHeroi.position.y > transform.position.y) { estado = EstadoDaqui.defendendoAcima; _Animator.SetTrigger("defendendoAcima"); } else if (tempoDecorrido > coolDown) { //mov.AplicadorDeMovimentos(DirecaoNoPlano.NoUpNormalizado(transform.position, doHeroi.position)); FlipDirection.Flip(andador.transform, transform.position.x - doHeroi.transform.position.x); if (Mathf.Abs(doHeroi.position.x - transform.position.x) < distanciaDeEspadada) { int random = Random.Range(0, 10); if (random <= 5) { IniciaAtaque(); } else { if (BoaDistanciaAtras()) { FlipDirection.Flip(andador.transform, -transform.position.x + doHeroi.transform.position.x); estado = EstadoDaqui.backdash; mov.AplicadorDeMovimentos( DirecaoNoPlano.NoUpNormalizado(GameController.g.Manager.transform.position, transform.position), true); tempoDecorrido = 0; } else { IniciaAtaque(); } } } else { int sorteio = Random.Range(0, 5); if (sorteio <= 1) { estado = EstadoDaqui.aproximandoSe; } else { IniciaProjetil(); } } } else if (Vector2.Distance(transform.position, doHeroi.position) > distanciaDeDesligar) { estado = EstadoDaqui.retorneAoInicio; } break; case EstadoDaqui.retorneAoInicio: if (Vector2.Distance(doHeroi.position, transform.position) > distanciaDeDesligar) { if (Vector2.Distance(transform.position, posOriginal) < 0.5f) { EventAgregator.Publish(EventKey.returnRememberedMusic, null); estado = EstadoDaqui.emEspera; } else { mov.AplicadorDeMovimentos(DirecaoNoPlano.NoUpNormalizado(transform.position, posOriginal)); } } else { tempoDecorrido = 0; estado = EstadoDaqui.buscadorDeAcao; } break; case EstadoDaqui.defendendoAcima: if (doHeroi.position.y <= transform.position.y) { _Animator.SetTrigger("retornoDoDefendendoAcima"); estado = EstadoDaqui.buscadorDeAcao; } break; case EstadoDaqui.backdash: FlipDirection.Flip(andador.transform, transform.position.x - doHeroi.transform.position.x); tempoDecorrido += Time.deltaTime; if (tempoDecorrido < tempoDeBackDash) { mov.AplicadorDeMovimentos( DirecaoNoPlano.NoUpNormalizado(GameController.g.Manager.transform.position, transform.position)); } else { mov.AplicadorDeMovimentos( DirecaoNoPlano.NoUpNormalizado(transform.position, GameController.g.Manager.transform.position)); FlipDirection.Flip(andador.transform, transform.position.x - doHeroi.transform.position.x); if (Mathf.Abs(doHeroi.position.x - transform.position.x) > 1.1f * distanciaDeEspadada) { IniciaProjetil(); } else { estado = EstadoDaqui.buscadorDeAcao; tempoDecorrido = 0; } } break; } BaseMoveRigidbody.PositionWithAndador(andador, transform); }
// Update is called once per frame void Update() { switch (estado) { case EstadoDaqui.buscadorDeAcao: tempoDecorrido += Time.deltaTime; animador.SetBool("ataqueMagico", false); animador.SetBool("ataqueBasico", false); if (tempoDecorrido > coolDown) { if (Vector3.Distance(doHeroi.position, transform.position) < distanciaDeDesligar) { if (Mathf.Abs(doHeroi.position.x - transform.position.x) < distanciaDeEspadada) { int sorteio = Random.Range(0, 4); if (sorteio == 0) { DispareMagia(); } else { tempoDecorrido = 0; animador.SetBool("ataqueBasico", true); estado = EstadoDaqui.ataqueComEspada; } } else { int sorteioB = Random.Range(0, 4); if (sorteioB == 0) { DispareMagia(); } else { estado = EstadoDaqui.movimente; } } } else { EventAgregator.Publish(EventKey.returnRememberedMusic, null); estado = EstadoDaqui.emEspera; } } break; case EstadoDaqui.movimente: float posX = transform.position.x; if (posX > limitador_xMin.position.x && posX < limitador_xMax.position.x) { if (Vector3.Distance(doHeroi.position, transform.position) < distanciaDeEspadada) { tempoDecorrido = coolDown + 1; estado = EstadoDaqui.buscadorDeAcao; } else { r2.velocity = velocidadeDoMovimento * DirecaoNoPlano.NoUpNormalizado(transform.position, doHeroi.position); } } else { if (Vector3.Distance(doHeroi.position, transform.position) > distanciaDeDesligar) { estado = EstadoDaqui.retorneAoInicio; } else { DispareMagia(); } } break; case EstadoDaqui.retorneAoInicio: if (Vector3.Distance(doHeroi.position, transform.position) > distanciaDeDesligar) { if (Vector3.Distance(transform.position, posOriginal) < 0.5f) { EventAgregator.Publish(EventKey.returnRememberedMusic, null); estado = EstadoDaqui.emEspera; } else { r2.velocity = velocidadeDoMovimento * DirecaoNoPlano.NoUpNormalizado(transform.position, posOriginal); } } else { tempoDecorrido = coolDown = 1; estado = EstadoDaqui.buscadorDeAcao; } break; case EstadoDaqui.ataqueComEspada: tempoDecorrido += Time.deltaTime; if (tempoDecorrido > tempoDoAtaqueEspada) { estado = EstadoDaqui.buscadorDeAcao; animador.SetBool("ataqueBasico", false); tempoDecorrido = 0; } break; case EstadoDaqui.porradaNoChao: tempoDecorrido += Time.deltaTime; if (tempoDecorrido > tempoDePorradaNoChao) { estado = EstadoDaqui.buscadorDeAcao; animador.SetBool("ataqueMagico", false); tempoDecorrido = 0; } break; } transform.position = r2.transform.position; if (doHeroi) { FlipDirection.Flip(transform, -transform.position.x + doHeroi.position.x); } }