コード例 #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();
    }
コード例 #2
0
 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;
 }
コード例 #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();
        }
    }
コード例 #4
0
 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;
 }
コード例 #5
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();
    }
コード例 #6
0
    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));
        });
    }
コード例 #7
0
    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
                  );
    }
コード例 #8
0
    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);
    }
コード例 #9
0
    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);
    }
コード例 #10
0
    // 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);
    }
コード例 #11
0
    // 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);
        }
    }