Esempio n. 1
0
    void OnTriggerEnter(Collider other)
    {
        Transform  rootT = other.gameObject.transform.root;
        GameObject go    = rootT.gameObject;

        //print("Triggered: " + go.name);
        // Make sure it's not the same triggering go as last time
        if (go == lastTriggerGo)
        { // c
            return;
        }
        lastTriggerGo = go; // d
        if (go.tag == "Enemy" && go.name != "Shooter(Clone)")
        {                   // If the shield was triggered by an enemy
            TakeDamage();   // Decrease the level of the shield by 1
            //print(shieldLevel);
            Destroy(go);    // … and Destroy the enemy // e
        }
        else if (go.tag == "PowerUp")
        {
            // If the shield was triggered by a PowerUp
            AbsorbPowerUp(go);
        }
        else if (go.tag == "Enemy" && go.name == "Shooter(Clone)")
        {
            Enemy_2 enemyShooter = go.GetComponent <Enemy_2>();
            enemyShooter.target = this.transform.position;
            // print(enemyShooter.target);
        }
        else
        {
            print("Triggered by non-Enemy: " + go.name); // f
        }
    }
Esempio n. 2
0
    //check if bullet is colliding with something
    private void OnTriggerEnter2D(Collider2D hitInfo)
    {
        //things that a bullet can do damage to
        Enemy_1 enemy_1 = hitInfo.GetComponent <Enemy_1>();
        Flyer_Enemy_Movement enemy_flying_1 = hitInfo.GetComponent <Flyer_Enemy_Movement>(); //the flying enemy that follows the player
        Fly_Back_And_Forth   enemy_flying_2 = hitInfo.GetComponent <Fly_Back_And_Forth>();   //the flying enemy that just consistently flys back and forth
        Enemy_2         enemy_2             = hitInfo.GetComponent <Enemy_2>();              //the platform patroller
        Block_Shootable block_shootable     = hitInfo.GetComponent <Block_Shootable>();      //the block that you can destroy with a shot
        BubbleBoy_1     bubble_boy_1        = hitInfo.GetComponent <BubbleBoy_1>();

        //getting reference to the Player to ignore collision with bullet
        Player the_player = hitInfo.GetComponent <Player>();

        if (enemy_1 != null)
        {
            enemy_1.TakeDamage(damage);
        }
        if (enemy_flying_1 != null)
        {
            enemy_flying_1.TakeDamage(damage);
        }
        if (enemy_flying_2 != null)
        {
            enemy_flying_2.TakeDamage(damage);
        }
        if (enemy_2 != null)
        {
            enemy_2.TakeDamage(damage);
        }
        if (block_shootable != null)
        {
            block_shootable.TakeDamage(100); //100 is all of the block's health
        }
        if (bubble_boy_1 != null)
        {
            bubble_boy_1.TakeDamage(damage);
        }
        //if bullet collides with player, ignore it
        if (the_player != null)
        {
            return;
        }

        Destroy(gameObject); //destroy bullet
    }
Esempio n. 3
0
    // private BoundsCheck bndCheck;

    public void ShipDestroyed(Enemy e)
    { // c
      // Potentially generate a PowerUp
        if (Random.value <= e.powerUpDropChance)
        { // d
          // Choose which PowerUp to pick
          // Pick one from the possibilities in powerUpFrequency
            int        ndx    = Random.Range(0, powerUpFrequency.Length); // e
            WeaponType puType = powerUpFrequency[ndx];
            // Spawn a PowerUp
            GameObject go = Instantiate(prefabPowerUp) as GameObject;
            PowerUp    pu = go.GetComponent <PowerUp>();
            // Set it to the proper WeaponType
            pu.SetType(puType); // f
                                // Set it to the position of the destroyed ship
                                // pu.transform.position = e.transform.position;
            if (e.transform.gameObject.name == "Shooter(Clone)")
            {
                Enemy_2 e2 = e.transform.root.gameObject.GetComponent <Enemy_2>();
                spawnPositions[e2.MainPositionIndex] = Vector3.zero;
                pu.transform.position = new Vector3(0f, 1.5f, 0f);
            }
            else
            {
                pu.transform.position = new Vector3(e.transform.position.x, 1.5f, e.transform.position.z);
            }
        }
        if (e.transform.gameObject.name == "Shooter(Clone)")
        {
            score += 20f;
        }
        else
        {
            score += 10f;
        }

        UpdateScore();
    }
Esempio n. 4
0
    public void SpawnEnemy()
    {
        // Pick a random Enemy prefab to instantiate
        int        ndx = Random.Range(0, prefabEnemies.Length);        // b
        GameObject go  = Instantiate <GameObject>(prefabEnemies[ndx]); // c
                                                                       // Position the Enemy above the screen with a random x position
        float enemyPadding = enemyDefaultPadding;                      // d

        Vector3 pos  = Vector3.zero;
        float   xMin = -60f;
        float   xMax = 60f;
        float   zMin = -60f;
        float   zMax = 60f;

        pos.x = Random.Range(xMin, xMax);
        pos.y = 0.5f;
        if (go.name == "Enemy(Clone)")
        {
            pos.z = zMax; //North of the wall
        }
        else if (go.name == "Shooter(Clone)")
        {
            Enemy_2 e2Go = go.GetComponent <Enemy_2>();


            switch (spawnPositions.Count)
            {
            case 0:
                pos = spawnPoint[0];
                spawnPositions.Add(spawnPoint[0]);    // North West corner
                e2Go.MainPositionIndex = 0;
                break;

            case 1:
                pos = spawnPoint[1];
                spawnPositions.Add(spawnPoint[1]);     // North East corner
                e2Go.MainPositionIndex = 1;
                break;

            case 2:
                pos = spawnPoint[2];
                spawnPositions.Add(spawnPoint[2]);     // South East corner
                e2Go.MainPositionIndex = 2;
                break;

            case 3:
                pos = spawnPoint[3];
                spawnPositions.Add(spawnPoint[3]);     // South West corner
                e2Go.MainPositionIndex = 3;
                break;

            default:
                for (int i = 0; i < spawnPositions.Count; i++)
                {
                    if (spawnPositions[i] == Vector3.zero)
                    {
                        //there is a vacancy
                        pos = spawnPoint[i];
                        spawnPositions[i]      = spawnPoint[i];
                        e2Go.MainPositionIndex = i;
                    }
                    if (i == spawnPositions.Count - 1)
                    {
                        go.SetActive(false);
                    }
                }


                break;
            }
        }
        if (go.activeInHierarchy)
        {
            go.transform.position = pos;
        }
        else
        {
            Destroy(go);
        }

        // Invoke SpawnEnemy() again
        Invoke("SpawnEnemy", 1f / enemySpawnPerSecond); // g
    }
    public void Fire()
    {
        // If this.gameObject is inactive, return
        if (!gameObject.activeInHierarchy)
        {
            return;                                // h
        }
        // If it hasn't been enough time between shots, return
        if (Time.time - lastShotTime < def.delayBetweenShots)
        { // i
            return;
        }
        if (transform.root.gameObject.tag == "Player")
        {
            Ray ray = Camera.main.ViewportPointToRay(Vector3.one * 0.5f);
            //  Ray ray = Camera.main.ViewportPointToRay(new Vector3(0.5f,3f,0f));

            Debug.DrawRay(ray.origin, ray.direction * 100f, Color.red, 2f);

            RaycastHit hitInfo;
            if (Physics.Raycast(ray, out hitInfo, 100f))
            {
                target = hitInfo.point;
                if (hitInfo.rigidbody != null)
                {
                    // hitInfo.rigidbody.AddForceAtPosition(ray.direction * pokeForce, hitInfo.point);
                }
            }
        }
        else if (transform.root.gameObject.tag == "Enemy")
        {
            Enemy_2 enemyShooter = transform.root.gameObject.GetComponent <Enemy_2>();
            target = enemyShooter.target;
            //print(target);
        }
        Projectile p;
        Vector3    vel = Vector3.zero;

        Debug.Log(target);
        if (collar != null)
        {
            vel = (target - collar.transform.position) * def.velocity; // j
        }

        /* if (transform.up.y < 0)
         * {
         *   vel.y = -vel.y;
         * }*/
        switch (type)
        { // k
        case WeaponType.blaster:
            p = MakeProjectile();
            p.rigid.velocity = vel;
            // p.rigid.MovePosition(new Vector3(-20,0,30) * def.velocity *200f);
            break;

        case WeaponType.spread:     // l
            p = MakeProjectile();   // Make middle Projectile
            p.rigid.velocity = vel;
            p = MakeProjectile();   // Make right Projectile
            p.transform.rotation = Quaternion.AngleAxis(10, collar.transform.forward);
            p.rigid.velocity     = p.transform.rotation * vel;
            p = MakeProjectile();     // Make left Projectile
            p.transform.rotation = Quaternion.AngleAxis(-10, Vector3.forward);
            p.rigid.velocity     = p.transform.rotation * vel;
            break;
        }
    }
Esempio n. 6
0
 public static void ResetAllFreq()
 {
     _dropPowerUp = 6;
     Enemy_1.ResetFreq();
     Enemy_2.ResetFreq();
 }