Exemplo n.º 1
0
    void Shoot(Transform target)
    {
        //cannon turret
        if (bulletTurret)
        {
            GameObject   thisBullet   = Instantiate(bullet, firePoint.position, firePoint.rotation);
            BulletScript bulletScript = thisBullet.GetComponent <BulletScript>();
            if (bulletScript != null)
            {
                bulletScript.setTargetTo(target);
                bulletScript.setDamage(damage);
            }
        }

        //missile turret
        else if (missileTurret)
        {
            int missileNum = 1;
            if (upgraded3)
            {
                missileNum = 4;
            }
            for (int i = 0; i < missileNum; i++)
            {
                GameObject    thisMissile   = Instantiate(missile, firePoint.position + Random.insideUnitSphere * 5, firePoint.rotation);
                MissileScript missileScript = thisMissile.GetComponent <MissileScript>();
                if (missileScript != null)
                {
                    missileScript.setTargetTo(target);
                    missileScript.setDamage(damage, aoeDamage);
                }
            }
        }

        //pulse turret
        else if (pulseTurret)
        {
            Collider[] objectsHit = Physics.OverlapSphere(firePoint.position, range);
            foreach (Collider c in objectsHit)
            {
                if (c.tag.Equals(enemyTag))
                {
                    c.gameObject.GetComponent <EnemyAIScript>().takeDamage(damage);
                }
            }
        }

        //freeze turret
        else if (freezeTurret)
        {
            GameObject enemy = target.gameObject;
            enemy.GetComponent <EnemyAIScript>().slow(slowDuration, slowPrentageAmount);
            enemy.GetComponent <EnemyAIScript>().takeDamage(damage);

            laserEffect.SetPosition(0, firePoint.position);
            laserEffect.SetPosition(1, target.position);
        }

        //death laser
        else if (DeathLaserTurret)
        {
            GameObject enemy = target.gameObject;
            enemy.GetComponent <EnemyAIScript>().takeDamage(damage);

            if (upgraded2)
            {
                enemy.GetComponent <EnemyAIScript>().slow(slowDuration, slowPrentageAmount);
            }

            laserEffect.SetPosition(0, firePoint.position);
            laserEffect.SetPosition(1, target.position);
        }

        //firing effect
        if (fireEffect != null)
        {
            GameObject fireParticles;
            if (upgraded3 && upgradedFireEffect != null)
            {
                fireParticles = Instantiate(upgradedFireEffect, firePoint.position, Quaternion.LookRotation(target.position - transform.position));
            }
            else
            {
                fireParticles = Instantiate(fireEffect, firePoint.position, Quaternion.LookRotation(target.position - transform.position));
            }
            Destroy(fireParticles, 1f);
        }
    }