示例#1
0
 void Start()
 {
     HillockComum = gameObject.GetComponentInParent <Inimigo>();
     player       = GameObject.FindGameObjectWithTag(TagsUtils.PLAYER);
     _cdwAtaq     = 0;
     podeAtacar   = false;
 }
示例#2
0
 private void AtacarComShuriken(Inimigo alvo)
 {
     if (Input.GetKeyDown(KeyCode.Q))
     {
         Spawnarshuriken();
     }
 }
    public void CalculateTotalEnemyDMG(BaseAction usedAction, Inimigo inim)
    {
        totalActionDMG = 0;

        inimigoAgindo   = inim;
        enemyusedAction = usedAction;

        totalActionDMG   = (int)CalculateEnemyActionDMG();
        totalCriticalDMG = CalculateEnemyCriticalDMG();
        totalEffectDMG   = CalculateStatusEffectDMG();

        totalEnemyDMG = totalActionDMG + totalCriticalDMG + totalEffectDMG;

        totalEnemyDMG = calculatePlayerResistance();

        totalEnemyDMG += (int)(Random.Range(-(totalEnemyDMG * dmgVariator), totalEnemyDMG * dmgVariator));

        if (DecidirEvasion()) //se Aila desviou...
        {
            totalEnemyDMG             = 0;
            BattleHandler.turnLogText = "Aila desviou do ataque";
        }
        else if (foicriticoInim) //se não desviou, e na verdade tomou um crítico....
        {
            BattleHandler.turnLogText = "Ouch! um crítico inimigo! Causou " + totalEnemyDMG + " de dano!";
        }
        else //se nenhum destes ocorreu, então foi dano normal
        {
            BattleHandler.turnLogText = "Causou " + totalEnemyDMG + " de dano";
        }

        BattleHandler.waitActive = true;

        GameInformation.AilaPVatual -= (int)totalEnemyDMG;
    }
    public void Ice_Block(Vector2 pos, Vector2 dir, float tempo, float dano)
    {
        RaycastHit2D r = Physics2D.Raycast(pos, dir);

        if (r.transform != null)
        {
            Quimica qui = r.transform.GetComponent <Quimica>();
            if (qui != null)
            {
                qui.humidade = 1;
            }

            Inimigo i = r.transform.gameObject.GetComponent <Inimigo>();
            if (i != null)
            {
                Rigidbody2D b = r.transform.gameObject.GetComponent <Rigidbody2D>();
                b.constraints     = RigidbodyConstraints2D.FreezeAll;
                b.velocity        = Vector2.zero;
                b.angularVelocity = 0;
                Instantiate(Gelo, r.transform);
                i.descongelar(tempo);


                i.vida -= dano;//Causar Dano
            }
        }
    }
    private float dmgVariator = 0.05f; // 5%

    public void CalculateTotalPlayerDMG(BaseAction usedAction, Inimigo inimAlvo)
    {
        totalActionDMG = 0;

        playerusedAction = usedAction;
        Debug.Log("Aila usou " + usedAction.ActionName);

        totalActionDMG   = (int)CalculateActionDMG();
        totalCriticalDMG = CalculateCriticalDMG();
        totalEffectDMG   = CalculateStatusEffectDMG();

        totalPlayerDMG  = totalActionDMG + totalCriticalDMG + totalEffectDMG;                                 //Dano combinado do ataque em si, + o crítico, mais o status.
        totalPlayerDMG  = calculateEnemyResistance(inimAlvo);
        totalPlayerDMG += (int)(Random.Range(-(totalPlayerDMG * dmgVariator), totalPlayerDMG * dmgVariator)); // adiciona uma variaçãod e 5% entre danos, afinal raramente um ataque de uma mesma pessoa causa exatamente o mesmo dano

        inimAlvo.TakeDamage((int)totalPlayerDMG, totalStunDMG);                                               //Chama o método de tomar dano dentro do script do inimigo alvo

        BattleHandler.jogadorTerminouTurno = true;
        if (foicritico)
        {
            BattleHandler.turnLogText = "Uau! Um golpe crítico! Causou " + totalPlayerDMG + " de dano!";
        }
        else
        {
            BattleHandler.turnLogText = "Causou " + totalPlayerDMG + " de dano";
        }
        BattleHandler.waitActive = true;
    }
示例#6
0
    IEnumerator GeraInimigos()
    {
        yield return(new WaitForSeconds(espera));

        while (true)
        {
            Vector3 posicaoInimigo = new Vector3(Random.Range(-limitesInimigo.x, limitesInimigo.x), limitesInimigo.y, 0);

            Inimigo inimigoObject = Instantiate(inimigo, posicaoInimigo, Quaternion.identity) as Inimigo;

            Rigidbody2D inimigoRB = inimigoObject.GetComponent <Rigidbody2D> ();

            if (gravidadeInimigo == 0)
            {
                gravidadeInimigo = inimigoRB.gravityScale;
            }

            inimigoRB.gravityScale = gravidadeInimigo;

            yield return(new WaitForSeconds(intervaloInimigo));

            if (fimJogo)
            {
                yield return(new WaitForSeconds(espera));

                textoFimJogo.text = "GAME OVER";

                textoReinicio.text = "Aperte a tecla X para reiniciar";

                reinicio = true;

                break;
            }
        }
    }
    private void NovoInimigo()
    {
        int aleatorio = UnityEngine.Random.Range(1, 6);

        Inimigo slime       = new Inimigo("Slime", "FOR", 2, 1, 2, 1, 1);
        Inimigo goblin      = new Inimigo("Goblin", "FOR", 2, 1, 2, 1, 2);
        Inimigo orc         = new Inimigo("Orc", "FOR", 3, 1, 2, 3, 1);
        Inimigo spellcaster = new Inimigo("Spellcaster", "INT", 1, 4, 1, 2, 2);
        Inimigo lich        = new Inimigo("Lich", "INT", 1, 7, 1, 1, 3);

        switch (aleatorio)
        {
        case 1:
            inimigoAtual = slime;
            break;

        case 2:
            inimigoAtual = goblin;
            break;

        case 3:
            inimigoAtual = orc;
            break;

        case 4:
            inimigoAtual = spellcaster;
            break;

        case 5:
            inimigoAtual = lich;
            break;
        }
    }
示例#8
0
    private void OnCollisionEnter2D(Collision2D outro)
    {
        if (outro.gameObject.tag == "Inimigo") //Verifica se se chocou com um inimigo.
        {
            Inimigo inimigo = outro.gameObject.GetComponent <Inimigo>();

            if (state == State.caindo) //Se ele se chocou enquanto pulava, então destroi o inimigo e pula novamente.
            {
                inimigo.TriggerMorte();
                ForçaPulo += 5f;
                Pular();
                ForçaPulo = 30f;
            }
            else //Se não, vai para o estado "ferido" e aciona a animação de ferida, além de perder uma vida
            {
                levoudano.Play();
                state         = State.ferido;
                vida         -= 1;
                vidaText.text = vida.ToString();
                if (outro.gameObject.transform.position.x > transform.position.x) //Empurra para a esquerda ou direita
                {
                    rb.velocity = new Vector2(-ForçaDano, rb.velocity.y);
                }
                else
                {
                    rb.velocity = new Vector2(ForçaDano, rb.velocity.y);
                }
                if (vida <= 0) //Se a vida chegar a 0, reinicia a fase
                {
                    SceneManager.LoadScene(3);
                }
            }
        }
    }//Função que manipula a relação com os inimigos
示例#9
0
文件: Mapa.cs 项目: rcdmk/o-sistema
        /// <summary>
        /// Cria os inimigos e os posiciona na tela
        /// </summary>
        public void criarInimigos()
        {
            //Limpar inimigos atuais
            inimigos.Clear();

            //Criar Inimigos
            XMLinimigos = new XmlDocument();

            CustomText xml = principal.Content.Load <CustomText>(caminho + "_Inimigos");

            XMLinimigos.LoadXml(xml.SourceCode);

            for (int i = 0; i < XMLinimigos.DocumentElement.ChildNodes.Count; i++)
            {
                String  texturaItem = XMLinimigos.DocumentElement.ChildNodes[i].Attributes["sprite"].Value;
                int     X           = int.Parse(XMLinimigos.DocumentElement.ChildNodes[i].Attributes["x"].Value);
                int     Y           = int.Parse(XMLinimigos.DocumentElement.ChildNodes[i].Attributes["y"].Value);
                float   velocidade  = float.Parse(XMLinimigos.DocumentElement.ChildNodes[i].Attributes["velocidade"].Value);
                Inimigo novoInimigo = new Inimigo(principal, new Vector2(X * Tile.Dimensoes.X, Y * Tile.Dimensoes.Y) - new Vector2(0, 1), velocidade, texturaItem);
                novoInimigo.EsperaMax = float.Parse(XMLinimigos.DocumentElement.ChildNodes[i].Attributes["espera"].Value);
                novoInimigo.Initialize();
                novoInimigo.LoadContent(principal.Content);
                inimigos.Add(novoInimigo);
            }
        }
示例#10
0
    static void Main()
    {
        Jogador.iniciar("Otávio");      // acessa-se pela própria classe. Só é possível um jogador?
        Jogador.Info();



        Inimigo i1 = new Inimigo("Doido");

        Inimigo i2 = new Inimigo("Maluco");

        Inimigo i3 = new Inimigo("Pirado");


        // i1.alerta = true; // dá certo quando alerta não é static


        Inimigo.alerta = true; // muda pela classe pois agora coloquei alerta como static

        i1.nome = "oi";        // pode pois nome não é estático


        i1.info();
        i2.info();
        i3.info();
    }
示例#11
0
    IEnumerator Disparar()
    {
        RaycastHit2D hitInfo = Physics2D.Raycast(pontoLaser.position, pontoLaser.right);

        if (hitInfo)
        {
            Debug.Log(hitInfo.transform.name);

            Inimigo inimigo = hitInfo.transform.GetComponent <Inimigo>();

            if (inimigo != null)
            {
                GameObject explode = Instantiate(explosao, hitInfo.point, Quaternion.identity) as GameObject;
                Destroy(explode, 1.0f);
                inimigo.TomaDano(dano);
            }
            linha.SetPosition(0, pontoLaser.position);
            linha.SetPosition(1, hitInfo.point);
        }
        else
        {
            linha.SetPosition(0, pontoLaser.position);
            linha.SetPosition(1, pontoLaser.position + pontoLaser.right * 100);
        }

        linha.enabled = true;
        yield return(0);

        linha.enabled = false;
    }
示例#12
0
    public float GetEnemyActionAffinity(StatType statAff, Inimigo inim)
    {
        float Affnitymodifier = 0.20f;

        if (statAff == StatType.PODER)
        {
            return(inim.poder * Affnitymodifier);
        }
        if (statAff == StatType.IMAGINACAO)
        {
            return(inim.imaginacao * Affnitymodifier);
        }
        if (statAff == StatType.RESISTENCIA)
        {
            return(inim.resistencia * Affnitymodifier);
        }
        if (statAff == StatType.DETERMINACAO)
        {
            return(inim.determinacao * Affnitymodifier);
        }
        if (statAff == StatType.SORTE)
        {
            return(inim.sorte * Affnitymodifier);
        }

        return(1);
    }
示例#13
0
 void OnTriggerEnter2D(Collider2D enemy)
 {
     e = enemy.GetComponent <Inimigo>();
     if (e != null)
     {
         e.Kill();
     }
 }
示例#14
0
    //Função chamada depois que foi gerado
    protected override void _GeradoConfig(Node2D gerado, Node2D refe)
    {
        //Realiza a conexão com o sinal de Morte
        Inimigo inimigo = (Inimigo)gerado;

        inimigo.Connect("SinalMorte", this, nameof(_Apaga));
        inimigo.Ref = refe;
    }
示例#15
0
 private void _SensorPeCorpoSaiu(Node corpo)
 {
     if (corpo is Inimigo)
     {
         Inimigo inimigo = (Inimigo)corpo;
         inimigo.Fisica = true;
     }
 }
示例#16
0
    private void Awake()
    {
        player        = jogador.GetComponent <Player>();
        inimigoScript = inimigo.GetComponent <Inimigo>();

        animacao = this.GetComponent <Animator>();
        audio    = this.GetComponent <AudioSource>();
    }
示例#17
0
 void OnTriggerEnter(Collider elementoColidido)
 {
     if (elementoColidido.CompareTag("Inimigo"))
     {
         Destroy(this.gameObject);
         Inimigo inimigo = elementoColidido.GetComponent <Inimigo> ();
         inimigo.RecebeDano(pontosDeDano);
     }
 }
示例#18
0
    //    public bool isAwake = false;
    //public bool isAwake = false;


    void Start()
    {
        Player = GameObject.FindGameObjectWithTag("Player");
        script = GetComponent <EnemyController>();
        //awakeListener = Player.GetComponent<SphereCast>().awakeEnemies;
        //awakeListener.AddListener(WakeUp);
        enemyAI_ref = GetComponent <EnemyAI>();
        inimigo     = GetComponent <Inimigo>();
    }
示例#19
0
 //chama quando ocorre uma colisão
 void OnTriggerEnter(Collider itemColidico)
 {
     if (itemColidico.CompareTag("Inimigo"))
     {
         Destroy(this.gameObject);
         Inimigo inimigo = itemColidico.GetComponent <Inimigo> ();
         inimigo.RecebeDano(dano);
     }
 }
示例#20
0
    void Update()
    {
        Inimigo alvo = EscolheAlvo();

        if (alvo != null)
        {
            Atira(alvo);
        }
    }
示例#21
0
 private void OnTriggerEnter(Collider other)
 {
     if (other.CompareTag("Inimigo"))
     {
         Destroy(this.gameObject);
         //Destroy(other.gameObject);
         Inimigo inimigo = other.GetComponent <Inimigo>();
         inimigo.RecebeDano(pontosDeDano);
     }
 }
    private void Awake()
    {
        uIController      = GetComponent <UIController>();
        baralhoController = GetComponent <BaralhoController>();

        player1         = new Jogador("Jogador  ", baralhoController);
        player2         = new Inimigo("Inimigo  ", baralhoController);
        primeiroJogador = player1;
        segundoJogador  = player2;
    }
示例#23
0
    void Start()
    {
        Time.timeScale = 0;
        panelPause.SetActive(true);
        buttonItem.interactable = true;

        VidasExtras();          //crias os icones da via
        scriptInimigo = FindObjectOfType(typeof(Inimigo)) as Inimigo;
        scriptPlayer  = FindObjectOfType(typeof(Player)) as Player;
    }
示例#24
0
 private void _SensorPeCorpoEntrou(Node corpo)
 {
     if (corpo is Inimigo)
     {
         Inimigo inimigo = (Inimigo)corpo;
         inimigo.Fisica = false;
         inimigo.Dano();
         _forcaPulo = true;
     }
 }
示例#25
0
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision is BoxCollider2D && collision.gameObject.GetComponent <Inimigo>() != null)
     {
         Inimigo inimigo = collision.gameObject.GetComponent <Inimigo>();
         print(inimigo);
         StartCoroutine(inimigo.DanoCaractere(danoCausado, 0f));
         gameObject.SetActive(false);
     }
 }
 protected override void bugDoNivel1()
 {
     //		print(nivelDeEncontrado);
     //if(encontraveis[indiceDoProx-1].nivelFixo>1)
     //{
     inimigoUC.X = new cCriature(encontraveis[indiceDoProx - 1].nome, (uint)encontraveis[indiceDoProx - 1].nivelFixo).criature();
     //inimigoUC.X.cAtributos[0].Corrente = 1;
     IA = Inimigo.AddComponent <IA_inimigo>();
     IA.remendoDeBug();
     //}
 }
示例#27
0
    public void ReStart()
    {
        initCombat = player.GetComponent <iniciaCombate>();
        InimigoGO  = initCombat.vilao;

        playervida = player.GetComponent <Inimigo>();

        BattleText.text = "Inicio de combate";
        inimigo         = InimigoGO.GetComponent <Inimigo>();
        PlayerTurn();
    }
示例#28
0
 void Start()
 {
     PodeAndar    = false;
     PodeAtacar   = false;
     estaAtacando = false;
     Hillock      = gameObject.GetComponent <Hillock>();
     HillockComum = gameObject.GetComponent <Inimigo>();
     atackCollider.SetActive(false);
     player  = GameObject.FindGameObjectWithTag(TagsUtils.PLAYER);
     cdwPulo = 0;
 }
示例#29
0
 // Update is called once per frame
 void Update()
 {
     if (VatualPorc == 0)
     {
         mob = GameObject.FindGameObjectWithTag("Player").GetComponent <iniciaCombate>().vilao.GetComponent <Inimigo>();
         barra.fillAmount = 1;
     }
     vmax       = mob.Getvidamax();
     vatual     = mob.Getvida();
     VatualPorc = vatual / vmax;
 }
示例#30
0
 void Atira(Inimigo inimigo)
 {
     float tempoAtual = Time.time;
     if (tempoAtual > momentoDoUltimoDisparo + tempoDeRecarga) {
         momentoDoUltimoDisparo = tempoAtual;
         GameObject pontoDeDisparo = this.transform.Find ("CanhaoDaTorre/PontoDeDisparo").gameObject;
         Vector3 posicaoDoPontoDeDisparo = pontoDeDisparo.transform.position;
         GameObject projetil = (GameObject) Instantiate (projetilPrefab, posicaoDoPontoDeDisparo, Quaternion.identity);
         Missel missel = projetil.GetComponent<Missel>();
         missel.DefineAlvo(inimigo);
     }
 }
示例#31
0
    void OnCollisionEnter2D(Collision2D col)
    {
        enemy = col.gameObject;
        e     = enemy.GetComponent <Inimigo>();
        if (e != null)
        {
            e.Damage(damage);
            //  Debug.Log("")

            e.Stun(stunTime);
        }
    }
示例#32
0
 public void DefineAlvo(Inimigo inimigo)
 {
     alvo = inimigo;
 }
 void Start()
 {
     _inimigo = GetComponent<Inimigo>();
 }