Beispiel #1
0
    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;
 }
Beispiel #3
0
    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();
        }
    }
Beispiel #4
0
    // 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;
 }