// Update is called once per frame
    void FixedUpdate()
    {
        float melee = Input.GetAxis("Fire2"); //Left Alt ou botão esquerdo mouse

        if (melee > 0 && nextMelee < Time.time && !(myPC.GetRunning()))
        {
            myAnim.SetTrigger("gunMelee");     //Já é automaticamente true por um momento gatilho
            nextMelee = Time.time + meleeRate; //Tempo em segundos desde o inicio até "agora" + rate

            //do Damage
            //Cria array de colider que salva tudo que tiver dentro dessa overlap sphere
            //Parametros --- Lugar onde ela é criada, tamanho dela e masks que ela afetara
            Collider[] attacked = Physics.OverlapSphere(transform.position, knockBackRadius, shootableMask);

            for (int i = 0; i < attacked.Length; i++)
            {
                if (attacked[i].GetComponent <Collider>().tag == "Enemy")
                {
                    enemyHealth theEnemyHealth = attacked[i].GetComponent <enemyHealth>(); //tenta achar o script de vida

                    if (theEnemyHealth != null)
                    {
                        theEnemyHealth.addDamage(damage);
                        theEnemyHealth.damageFX(transform.position, -transform.forward);
                    }
                }
            }
        }
    }
示例#2
0
	// Use this for initialization
	void Awake () {
        shoottableMask = LayerMask.GetMask("Shootable");
        gunLine = GetComponent<LineRenderer>();

        shootRay.origin = transform.position;
        shootRay.direction = transform.forward;
        gunLine.SetPosition(0, transform.position);

        if (Physics.Raycast(shootRay, out shootHit, range, shoottableMask))
        {
            if(shootHit.collider.tag == "Enemy")
            {
                enemyHealth theEnemyHealth = shootHit.collider.GetComponent<enemyHealth>();
                if(theEnemyHealth != null)
                {
                    theEnemyHealth.addDamage(damage);
                    theEnemyHealth.damageFX(shootHit.point, -shootRay.direction);
                }
            }
            //Hit an enemy goes here
            gunLine.SetPosition(1, shootHit.point);
        }

        else gunLine.SetPosition(1, shootRay.origin + shootRay.direction*range);
	}
示例#3
0
    // Use this for initialization
    void Start()
    {
        Vector3 explosionPos = transform.position;

        Collider[] colliders = Physics.OverlapSphere(explosionPos, radius);
        foreach (Collider hit in colliders)
        {
            Rigidbody rb = hit.GetComponent <Rigidbody>();

            if (rb != null)
            {
                rb.AddExplosionForce(power, explosionPos, radius, 3.0f, ForceMode.Impulse);
            }
            if (hit.tag == "Player")
            {
                playerHealth thePlayerHealth = hit.gameObject.GetComponent <playerHealth>();
                thePlayerHealth.addDamage(damage);
            }
            else if (hit.tag == "Enemy")
            {
                enemyHealth theEnemyHealth = hit.gameObject.GetComponent <enemyHealth>();
                theEnemyHealth.addDamage(damage);
            }
        }
    }
示例#4
0
 void OnTriggerEnter2D(Collider2D other)
 {
     if (other.tag == "Enemy")
     {
         enemyHealth.addDamage(enemyDamage);
     }
 }
示例#5
0
    //public int playerMoney = 0;
    //Text playerMoneyText;

    #endregion

    // Use this for initialization
    void Awake()
    {
        //playerMoneyText = GameObject.Find("moneyAmount").GetComponent<Text>();
        //playerMoneyText.text = playerMoney.ToString();
        money         = GameObject.Find("moneyPanel").GetComponent <moneyIncreaser>();
        shootableMask = LayerMask.GetMask("Shootable");                    //Shootable layers, in layers. Find the shootable layer.
        gunLine       = GetComponent <LineRenderer>();                     //line renderer reference

        shootRay.origin    = transform.position;                           //Ray is being shot from where instantiated
        shootRay.direction = transform.forward;                            //Shoot forward from position
        gunLine.SetPosition(0, transform.position);                        //where to start and finish drawing

        if (Physics.Raycast(shootRay, out shootHit, range, shootableMask)) //chose the ray, out value will bring information as to what we hit, range is how far it will shoot, layermask to determine what can be hit/shot (shootable)
        {
            if (shootHit.collider.tag == "zombie")                         //if we have shot an enemy
            {
                //playerMoney++;
                money.increaseMoney();
                SetMoneyText();
                enemyHealth theEnemyHealth = shootHit.collider.GetComponent <enemyHealth>(); //get enemy health
                if (theEnemyHealth != null)                                                  //if we find it, and its not null
                {
                    theEnemyHealth.addDamage(damage);                                        //make damage
                    theEnemyHealth.damageFX(shootHit.point, -shootRay.direction);
                }
            }
            //Hit an enemy will be entered here
            gunLine.SetPosition(1, shootHit.point); //endpoint of gunline, what did i hit, where did i hit it
        }
        else
        {
            gunLine.SetPosition(1, shootRay.origin + shootRay.direction * range); //if nothing is hit, shoot a ray within the range we set
        }
    }
示例#6
0
    // Update is called once per frame
    void FixedUpdate()
    {
        float melee = Input.GetAxis("Fire2");

        if (melee > 0 && nextMelee < Time.time && !(myPC.getRunning()))
        {
            myAnim.SetTrigger("gunMelee");
            nextMelee = Time.time + meleeRate;

            //do damage
            Collider[] attacked = Physics.OverlapSphere(transform.position, knockBackRadius, shootableMask);

            int i = 0;
            while (i < attacked.Length)
            {
                if (attacked[i].tag == "Enemy")
                {
                    enemyHealth doDamage = attacked[i].GetComponent <enemyHealth>();
                    doDamage.addDamage(damage);
                    doDamage.damageFX(transform.position, transform.localEulerAngles);
                }
                i++;
            }
        }
    }
    public AudioClip explosionAudio; //Som da explosao

    // Start is called before the first frame update
    void Awake()
    {
        Vector3 explosionPos = transform.position;                          //Pega a posição do objeto pra criar a Overlap Sphere

        Collider[] colliders = Physics.OverlapSphere(explosionPos, radius); //Cria a overlap sphere naquele ponto com aquele raio
        foreach (Collider hit in colliders)
        {
            Rigidbody rb = hit.GetComponent <Rigidbody>(); //Pega o rigidbody do que foi acertado
            //Se rb foi encontrado no objeto
            if (rb != null)
            {
                Debug.Log("Acertou");
                //Built-in function --- Forca da explosao, ponto da onde explodiu, raio
                //Modificador que joga pra cima, modo de forca = impulso
                rb.AddExplosionForce(power, explosionPos, radius, 3.0f, ForceMode.Impulse);
                if (hit.tag == "Player")
                {
                    playerHealth thePlayerHealth = hit.gameObject.GetComponent <playerHealth>(); //Pq aqui é so o Collider
                    thePlayerHealth.addDamage(damage);
                }
                else if (hit.tag == "Enemy")
                {
                    enemyHealth theEnemyHealth = hit.gameObject.GetComponent <enemyHealth>();
                    theEnemyHealth.addDamage(damage);
                    theEnemyHealth.addFire();
                }
            }
        }
        AudioSource.PlayClipAtPoint(explosionAudio, transform.position, 1f);
    }
示例#8
0
 void OnTriggerEnter(Collider other)
 {
     if (other.tag == "Enemy")
     {
         enemyHealth theEnemyHealth = other.GetComponent <enemyHealth>();
         if (theEnemyHealth != null)
         {
             theEnemyHealth.addDamage(damage);
         }
     }
 }
示例#9
0
 void OnTriggerEnter2D(Collider2D other)
 {
     if (other.tag == "Enemy")
     {
         terkenaAttack = true;
         playHitAudio();
         pushBack(other.transform);
         enemyHealth hurtEnemy = other.gameObject.GetComponent <enemyHealth> ();
         hurtEnemy.addDamage(weaponDamage);
     }
 }
 void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.gameObject.layer == LayerMask.NameToLayer("Shootable"))
     {
         Destroy(gameObject);
     }
     if (collision.gameObject.tag == "Enemy")
     {
         enemyHealth hurtEnemy = collision.gameObject.GetComponent <enemyHealth>();
         hurtEnemy.addDamage(weaponDamage);
     }
 }
示例#11
0
 void OnTriggerEnter2D(Collider2D other)
 {
     if (other.gameObject.layer == LayerMask.NameToLayer("Shootable"))
     {
         Destroy(gameObject);
         if (other.tag == "Enemy")
         {
             enemyHealth hurtEnemy = other.gameObject.GetComponent <enemyHealth>();
             hurtEnemy.addDamage(bulletDamage);
         }
     }
 }
示例#12
0
 void OnTriggerStay2D(Collider2D other)
 {
     if (other.gameObject.layer == LayerMask.NameToLayer("Shootable"))
     {
         myPC.removeForce();
         Destroy(gameObject);
         if (other.tag == "Enemy")
         {
             enemyHealth hurtEnemy = other.gameObject.GetComponent <enemyHealth>();
             hurtEnemy.addDamage(weaponDamage);
         }
     }
 }
示例#13
0
 void OnTriggerEnter2D(Collider2D other)
 {
     if (other.gameObject.layer == LayerMask.NameToLayer("Shootable"))
     {
         myPC.removeForce();
         Instantiate(explosionEffect, transform.position, transform.rotation);
         Destroy(gameObject);
         if (other.tag == "Enemy")
         {
             enemyHealth hurtEnemy = other.gameObject.GetComponent <enemyHealth>();
             hurtEnemy.addDamage(weaponDamage);
         }
     }
 }
示例#14
0
 private void OnTriggerStay2D(Collider2D collision)
 {
     if (collision.gameObject.layer == LayerMask.NameToLayer("shootable"))
     {
         myPC.removeForce();
         Instantiate(explosionEffect, transform.position, transform.rotation);
         Destroy(gameObject);
     }
     if (collision.tag == "enemy")
     {
         enemyHealth hurtEnemy = collision.gameObject.GetComponent <enemyHealth>();
         hurtEnemy.addDamage(weaponDamage);
     }
 }
示例#15
0
 void OnTriggerStay2D(Collider2D other)
 {
     if (other.gameObject.layer == LayerMask.NameToLayer("ammuttava")) //layermask antaa tiedon,että objektia voi ampua. Muista lisätä layermask ammuttaviin objekteihin.
     {
         myPC.poistaliikkuvuus();
         Instantiate(explosionEffect, transform.position, transform.rotation);
         Destroy(gameObject);
         if (other.tag == "Enemy")
         {
             enemyHealth hurtEnemy = other.gameObject.GetComponent <enemyHealth>();
             hurtEnemy.addDamage(osumavahinko);
         }
     }
 }
示例#16
0
    }    //vua bat dau va cham

    void OnTriggerStay2D(Collider2D other)
    {
        if (other.gameObject.tag == "Shootable")
        {
            myPC.removeForce();
            Instantiate(bulletExplosion, transform.position, transform.rotation);
            Destroy(gameObject);             //phas huy doi tuong khi va cham
            if (other.gameObject.layer == LayerMask.NameToLayer("enemy"))
            {
                enemyHealth hurtEnemy = other.gameObject.GetComponent <enemyHealth>();
                hurtEnemy.addDamage(weaponDamage);
            }
        }
    }    //khi vat the di xuyen qua vat bi qua cham
示例#17
0
    void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Enemy" || other.gameObject.layer == LayerMask.NameToLayer("Shootable"))
        {
            myRB.velocity = Vector3.zero;
            enemyHealth theEnemyHealth = other.GetComponent <enemyHealth> ();
            if (theEnemyHealth != null)
            {
                theEnemyHealth.addDamage(damage);
                theEnemyHealth.addFire();
            }

            Destroy(gameObject);
        }
    }
示例#18
0
 // If you hit a Shootable object, remove the forces from the missle and destroy it
 void OnTriggerEnter2D(Collider2D other)
 {
     //if we hit ground or Shootable the rocket explodes
     if (other.gameObject.layer == LayerMask.NameToLayer("Shootable") || other.gameObject.layer == LayerMask.NameToLayer("Ground"))
     {
         myPC.removeForce();                                                   //Remove the force of the rocket
         Instantiate(explosionEffect, transform.position, transform.rotation); //add explotionEffect
         Destroy(gameObject);                                                  //destroy the gameObject
         // if the target is an enemy remove health from it
         if (other.tag == "Enemy")
         {
             enemyHealth hurtEnemy = other.gameObject.GetComponent <enemyHealth>(); // get the enemies health
             hurtEnemy.addDamage(weaponDamage);                                     // call addDamage
         }
     }
 }
示例#19
0
 //if the missile is going too fast we can still catch it
 void OnTriggerStay2D(Collider2D other)
 {
     //if the game object is on the same layer as the shootable layer
     if (other.gameObject.layer == LayerMask.NameToLayer("Shootable"))
     {
         myPC.removeForce();                                                   //calls the removeForce function
         Instantiate(explosionEffect, transform.position, transform.rotation); //creates the explosion effect
         Destroy(gameObject);                                                  //destroys this object (the missile) and not the projectile
         //if the other object has the enemy tag
         if (other.tag == "Enemy")
         {
             enemyHealth hurtEnemy = other.gameObject.GetComponent <enemyHealth>(); //assigns a new variable (hurtEnemy) to the enemyHealth script that references the object the script is on
             hurtEnemy.addDamage(weaponDamage);                                     //calls the addDamage function in the enemyHealth script and assigns the damage value to the variable weaponDamage defined on the rocket
         }
     }
 }
示例#20
0
 void OnTriggerEnter(Collider other)
 {
     //Nesse caso vai pegar o gameObject do collider que ele colidiu e pegar o layer desse gameObject
     if (other.tag == "Enemy" || other.gameObject.layer == LayerMask.NameToLayer("Shootable"))
     {
         myRB.velocity = Vector3.zero; //Para de mover tudo
         //Procura o script de vida do inimigo
         enemyHealth theEnemyHealth = other.GetComponent <enemyHealth>();
         //Se encontrar:
         if (theEnemyHealth != null)
         {
             theEnemyHealth.addDamage(damage); //Primeiro da o dano em si
             theEnemyHealth.addFire();         //Chama função pra dar dano de fogo no inimigo
         }
         Destroy(gameObject);
     }
 }
 // To get the info of the other collider hit by bullet
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.gameObject.layer == LayerMask.NameToLayer("Shootable"))
     {
         myPC.removeForce();
         Instantiate(explosionEffect, transform.position, transform.rotation);
         Destroy(gameObject);
         if (collision.tag == "Enemy")
         {
             enemyHealth enemyHurt = collision.gameObject.GetComponent <enemyHealth>();
             if (enemyHurt != null)   //if script exists call addDamage() from it
             {
                 enemyHurt.addDamage(weaponDamage);
             }
         }
     }
 }
示例#22
0
 void OnTriggerStay2D(Collider2D obj)
 {
     if (obj.gameObject.name == "Batas" || obj.gameObject.name == "Batas2")
     {
         Destroy(gameObject);
     }
     if (obj.gameObject.layer == LayerMask.NameToLayer("TargetTembak"))
     {
         ///Instantiate(explosionEffect, transform.position, transform.rotation);
         Destroy(gameObject);
         if (obj.gameObject.tag == "Enemy")
         {
             enemyHealth hurtEnemy = obj.gameObject.GetComponent <enemyHealth>();
             hurtEnemy.addDamage(weaponDamage);
         }
     }
 }
示例#23
0
    //When the arrow collides with a Shootable object, remove the arrow, check if its an enemy, then do damage if applicable
    void OnTriggerEnter2D(Collider2D other)
    {
        if ((other.gameObject.layer == LayerMask.NameToLayer("Shootable")) || (other.gameObject.layer == LayerMask.NameToLayer("Ground")))
        {
            myPC.removeForce();
            FindObjectOfType <AudioManager>().Play("Pop");
            Destroy(gameObject);

            if (other.tag == "Enemy")
            {
                myEnemy = other.gameObject.GetComponent <enemyHealth>();
                myEnemy.addDamage(arrowDamage);

                pushBack(other.transform);
            }
        }
    }
示例#24
0
 void OnTriggerStay2D(Collider2D other)
 {
     if (canAttack == true)
     {
         if (other.gameObject.layer == LayerMask.NameToLayer("Attackable"))
         {
             if (attack == true)
             {
                 if (other.tag == "Enemy")
                 {
                     if (canAttack == true)
                     {
                         enemyHealth hurtEnemy = other.gameObject.GetComponent <enemyHealth>();
                         hurtEnemy.addDamage(weaponDamage);
                     }
                     StartCoroutine(doAttack());
                 }
             }
         }
     }
 }
示例#25
0
 void OnTriggerEnter2D(Collider2D other) //whenever the collider comes into contact with another collider
 {
     if (other.gameObject.layer == LayerMask.NameToLayer("Shootable") || other.gameObject.layer == LayerMask.NameToLayer("Ground"))
     //if the collider is on the layer "Shootable", then stop kunai, instantiate spark effect, and destroy kunai sprite
     {
         myPC.removeForce();
         Instantiate(sparkEffect, transform.position, transform.rotation);
         Destroy(transform.parent.gameObject);
         if (other.tag == "Enemy")
         {
             if (other.gameObject.GetComponent <enemyHealth>())
             {
                 enemyHealth damageEnemy = other.gameObject.GetComponent <enemyHealth>();
                 damageEnemy.addDamage(kunaiDamage);
             }
             else if (other.gameObject.GetComponent <boss1EnemyHealth>())
             {
                 boss1EnemyHealth damageEnemy = other.gameObject.GetComponent <boss1EnemyHealth>();
                 damageEnemy.addDamage(kunaiDamage);
             }
         }
     }
 }
示例#26
0
    //Called in Button Boss
    public static void spawnBoss()
    {
        if (bossSpawned)
        {
            return;
        }
        bossSpawned = true;

        foreach (GameObject i in allEnemies)
        {
            if (i == null || i.tag == "Boss")
            {
                continue;
            }
            enemyHealth tempHealth = i.GetComponent <enemyHealth>();
            tempHealth.addDamage(tempHealth.currentHealth);
        }

        int index = 0;

        switch (currPlayer.scene.name)
        {
        case ("Fight scene"):
            break;

        case ("Fight scene 1"):
            index = 1;
            break;

        case ("Fight scene 2"):
            index = 2;
            break;
        }
        currEnemy = Instantiate(SaveManager.Instance.enemyBoss[index], (Vector2)currPlayer.transform.position + new Vector2(10f, 1f), currPlayer.transform.rotation);
        setEnemyStats(currEnemy);
    }
示例#27
0
    LineRenderer gunLine;      //Instancia uma variavel que pode guardar um LineRenderer

    // Use this for initialization
    void Awake()
    {
        shootableMask = LayerMask.GetMask("Shootable"); //Procura qual posição esta o layer shootable
        gunLine       = GetComponent <LineRenderer>();  //Instancia o LineRenderer do bullet

        shootRay.origin    = transform.position;        //Instancia o raio do tiro a partir da onde ele está sendo chamado
        shootRay.direction = transform.forward;         //Vai castar o raio na direção do transform do objeto que esta chamando (gunMuzzle)
        gunLine.SetPosition(0, transform.position);     //Vai iniciar na posição de onde o tiro foi instanciado (gunMuzzle)

        //Vai pegar a informação shootRay e vai retornar a informação dele para o shootHit, a distancia (range) que podera ser atirado
        //e vai "acertar" apenas o shootableMask
        if (Physics.Raycast(shootRay, out shootHit, range, shootableMask))
        {
            //Vai usar essa informação do shoothit e ver se o collider que ele acertou tem tag "Enemy"
            if (shootHit.collider.tag == "Enemy")
            {
                //Se tiver ele instancia uma var do tipo enemyHealth que pega o componente EnemyHealt(script)
                //Do objeto que o ray acertou, nesse caso assumi-se que esta no top layer
                //Se não estiver teria que pesquisar no root do gameObject
                enemyHealth theEnemyHealth = shootHit.collider.GetComponent <enemyHealth>();
                //Se ele encontrar o script:
                if (theEnemyHealth != null)
                {
                    theEnemyHealth.addDamage(damage); //Chama a função dentro do inimigo que da dano nele
                    //Vai instancia o efetio de dano no ponto onde o shootHit acertou e na direção oposta do raio em si
                    //Pra ficar mais claro, revisa o script Enemy health e ve os parametros da função DamageFX
                    theEnemyHealth.damageFX(shootHit.point, -shootRay.direction);
                }
            }
            gunLine.SetPosition(1, shootHit.point); // Vai vir da posição inicial até aqui(a partir da arma até o alvo), shootHit.point no caso
        }
        else
        {
            gunLine.SetPosition(1, shootRay.origin + shootRay.direction * range); //Se não acertar nada ele vai atirar um raio até o alcance maximo que ele consegue
        }
    }