Exemple #1
0
    // Update is called once per frame
    void Update()
    {
        switch (estado)
        {
        case EstadoDaqui.preparandoTiro:
            transform.rotation = Quaternion.Lerp(
                transform.rotation,
                Rotation2D.GetRotation(transform.position, doHeroi.position), 10 * Time.deltaTime);

            tempoDecorrido += Time.deltaTime;

            if (tempoDecorrido > intervaloDeTiro)
            {
                estado = EstadoDaqui.emTiro;

                GameObject G = InstanciaLigando.Instantiate(projetil, transform.position, 10);
                G.AddComponent <ProjetilQuicavel>().Iniciar(transform.right, particulaTelegrafista, velDoProjetil);

                InstanciaLigando.Instantiate(particulaTelegrafista, transform.position, 5);
                VerificadorDeDistancia();
            }
            else if (Vector2.Distance(transform.position, doHeroi.position) > distanciaDeAparecer ||
                     Vector2.Distance(transform.position, doHeroi.position) < proximoDeMais)
            {
                estado = EstadoDaqui.emEspera;
                ShowHideEnemy(false);
                VerificadorDeDistancia();
            }
            break;
        }
    }
    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);
    }