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(); } }
// Update is called once per frame void Update() { switch (estado) { case EstadoDaqui.movendo: UpdateMovendo(); break; case EstadoDaqui.esperandoMovimento: TempoDecorrido += Time.deltaTime; if (TempoDecorrido > TempoEsperando) { estado = EstadoDaqui.movendo; } break; case EstadoDaqui.telegrafandoPulo: TempoDecorrido += Time.deltaTime; if (TempoDecorrido > TEMPO_TELEGRAFANDO_PULO) { DirDaAceleracao = Vector3.ProjectOnPlane(GameController.g.Manager.transform.position - transform.position, Vector3.up).normalized; UltimaAcelerada = Time.time; Mov.ChangeSpeed(InvestSpeed); Mov.Pulo(); estado = EstadoDaqui.pulando; TempoDecorrido = 0; } break; case EstadoDaqui.pulando: Mov.AplicadorDeMovimentos(DirDaAceleracao); Debug.Log(Mov.NoChao); TempoDecorrido += Time.deltaTime; if (Mov.NoChao && TempoDecorrido > 0.5f) { TempoDecorrido = 0; estado = EstadoDaqui.tempoDepoisDoPulo; } break; case EstadoDaqui.tempoDepoisDoPulo: TempoDecorrido += Time.deltaTime; Mov.AplicadorDeMovimentos(Vector3.zero); if (TempoDecorrido > TempoEsperando) { Mov.ChangeSpeed(StandardSpeed); estado = EstadoDaqui.movendo; } break; } PositionChangeWithAndador(); }
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 void UpdateAcelerando() { TempoDecorrido += Time.deltaTime; if (TempoDecorrido < TEMPO_ACELERANDO) { Mov.AplicadorDeMovimentos( Vector3.ProjectOnPlane(DirDaAceleracao, Vector3.up)); } else { TempoDecorrido = 0; _Animator.SetTrigger("retornarAoPadrao"); OnFinallyAccelerate();//estado = EstadoDaqui.finalizandoInvestida; Mov.ChangeSpeed(StandardSpeed); } }
protected override void OnFinallyAccelerate() { Mov.AplicadorDeMovimentos(0.25f * (Mov.Velocity.normalized)); estado = EstadoDaqui.finalizandoInvestida; }