Example #1
0
    // Update is called once per frame
    void Update()
    {
        transform.Translate(Vector3.up * speed);
        if ((transform.position.y) >= ScreenHeight)
        {
            Destroy(gameObject);
        }
        //COLLISIONS
        for (int i = 0; i < Main.EnemiesList.Count; i++)
        {
            GameObject target = Main.EnemiesList[i].gameObject;
            if (target != null)                                                              // Checks to avoid missingexception
            {
                enemy = target.GetComponent <Enemies>();                                     // allows access to methods and varibles within targets constructor

                float distance = (transform.position - target.transform.position).magnitude; //creates a float which stores position between 2 variables
                //Debug.Log (target); //check the distance between two vectors
                if (distance <= 0.5f)
                {
                    enemy.SubtractLife(target);     //access enemy referance and use Subtract method to take HP away from target
                    Destroy(gameObject);            //Destroy Bullet
                }
                //Score if killed
                if (enemy.Health == 0)
                {
                    EnemyCount -= 1;                                                                      // 1 Enemy has been hit, Deduct Health
                    CreateParticles(transform.position, target.renderer.material.color, enemy.speed, 20); // Feed in particles spawn area, color and take in speed for effects
                    Destroy(target.gameObject);                                                           //Destroy Enemy
                    EnemiesList.Remove(target.gameObject);                                                //Remove enemy Gameobject from List, also avoids missingexception

                    if (target.renderer.material.color == EnemyType[0])
                    {
                        UI.ChangeScore(10);                        //Calls ChangeScore from UI Script
                    }
                    if (target.renderer.material.color == EnemyType[1])
                    {
                        UI.ChangeScore(25);
                        int spawn = Random.Range(0, 10);
                        if (spawn < 8)
                        {
                            return;
                        }
                        else
                        {
                            //BONUS PICK UP
                            GameObject bonus = GameObject.CreatePrimitive(PrimitiveType.Capsule);
                            bonus.AddComponent <Bonus>();
                            bonus.AddComponent <Strobe>();
                            bonus.transform.localScale = new Vector3(0.2f, 0.2f, 0.1f);
                            bonus.transform.position   = target.transform.position;
                        }
                    }
                    if (target.renderer.material.color == EnemyType[2])
                    {
                        UI.ChangeScore(20);
                    }
                }
            } //end target if
        }     //end For loop
    }         //end update
Example #2
0
 public override void Die()
 {
     if (CurrentHealth <= 0)
     {
         EnemiesList.Remove(this);
         print("[Enemy Death]: " + transform.name);
         Destroy(gameObject);
     }
 }
    private void DestroyEnemies()
    {
        foreach (var item in enemiesToDestroyList)
        {
            Destroy(enemyToGoMap[item]);
            enemyToGoMap.Remove(item);
            EnemiesList.Remove(item);
            EnemiesKilled++;
            pC.buildingController.AdjustGold(false, item.Bounty);
        }

        enemiesToDestroyList.Clear();
    }
    // Update is called once per frame
    void Update()
    {
        //COLLISIONS
        for (int i = 0; i < EnemiesList.Count; i++)
        {
            GameObject target = EnemiesList[i].gameObject;
            if (target != null)                                                                   // Checks to avoid missingexception
            {
                Enemies enemy       = target.GetComponent <Enemies>();                            // creates enemies instance that access referance that allows access to methods and variables within target
                Color   enemycolour = target.GetComponent <Renderer>().material.color;            // referance colour
                float   distance    = (transform.position - target.transform.position).magnitude; //creates a float which stores position between 2 variables
                //Debug.Log (target); //check the distance between two vectors
                if (distance <= 0.5f)
                {
                    enemy.SubtractLife(target);             //access enemy referance and use Subtract method to take HP away from target
                    Destroy(gameObject);                    //Destroy Bullet
                }
                //Score if killed
                if (enemy.Health == 0)
                {
                    explosionsound.Play();                                             //Play Bullet Sound clip
                    CreateParticles(transform.position, enemycolour, enemy.speed, 20); // Feed in particles spawn area, color and take in speed for effects
                    EnemiesList.Remove(target.gameObject);                             //Remove enemy Gameobject from List, also avoids missingexception

                    if (enemycolour == EnemyType[0])
                    {
                        ChangeScore(10);                        ///calls method inherited from main
                    }
                    if (enemycolour == EnemyType[1])
                    {
                        ChangeScore(25);                        //method inherited from main
                        int spawn = Random.Range(0, 10);
                        if (spawn <= 5)
                        {
                            return;
                        }
                        else
                        {
                            CreateBonus(target.transform.position);
                        }
                    }
                    if (enemycolour == EnemyType[2])
                    {
                        ChangeScore(20);                        //method inherited from main
                    }
                }
            }    //end target if
        }        //end For loop
    }
    // Update is called once per frame
    void Update()
    {
        //COLLISIONS
        for (int i = 0; i < EnemiesList.Count; i++)
        {
            GameObject target = EnemiesList[i].gameObject;
            if (target != null)
            {
                Enemies enemy = target.GetComponent <Enemies>();      // creates enemies instance that access referance that allows access to methods and variables within target
                if (target != null && enemy.alive == true)            // Checks to avoid missingexception

                //Color enemycolour=target.GetComponent<Renderer>().material.color;// referance colour
                {
                    GameObject parts    = target.transform.FindChild("p").gameObject;
                    float      distance = (transform.position - target.transform.position).magnitude;    //creates a float which stores position between 2 variables
                    //Debug.Log (target); //check the distance between two vectors
                    if (distance <= 0.5f)
                    {
                        // Enable renderer accordingly
                        enemy.SubtractLife(enemy);                //access enemy referance and use Subtract method to take HP away from target
                        gameObject.SetActive(false);              //Disable gameObject aka bullet
                    }
                    //Score if killed
                    if (enemy.Health == 0)
                    {
                        enemy.alive            = false;
                        parts.transform.parent = null;                //Breaks particles away from Enemy
                        parts.transform.parent = ParticleManager.transform;
                        parts.SetActive(true);
                        //enemy.CreateParticles(transform.position, enemycolour, enemy.speed, 20); // Feed in particles spawn area, color and take in speed for effects
                        EnemiesList.Remove(target.gameObject);                 //Remove enemy Gameobject from List, also avoids missingexception
                        if (target.GetComponent <Renderer>().material.color == EnemyType[1])
                        {
                            int spawn = Random.Range(0, 10);
                            if (spawn <= 5)
                            {
                                return;
                            }
                            else
                            {
                                CreateBonus(target.transform.position);
                            }
                        }
                    }
                } //end target if
            }
        }         //end For loop
    }
        /// <summary>
        /// 每帧运行,处理敌人的移动
        /// </summary>
        private void LoopEnemyMove()
        {
            //零、充值所有敌人的期望
            foreach (var e in EnemiesList)
            {
                e.ResetExpectation();
                //Debug.Log("Im the last, FC="+EnemiesList.Last().CrowdedFront+", BC="+EnemiesList.Last().CrowdedBack);
            }

            //一、设置所有敌人的前力后力
            foreach (var e in EnemiesList)
            {
                if ((e.CrowdedFront && (!e.CrowdedBack)) ||//这个人在末端
                    e.HasConflict //或者这个人有冲突
                    )
                {                 //对这个人,向前开始运算它们的前进后退期望(递归)
                    e.SetAllExpectation();
                }
            }

            //二、让每个敌人根据自己的情况运动,应该被删掉的敌人会把自己放到EnemiesToDelete里
            for (int i = 0; i < EnemiesList.Count; i++)
            {
                if (EnemiesList[i] == null)
                {
                    continue;
                }
                EnemiesList[i].Move();
            }

            //三、删掉刚才应该被删掉的敌人
            foreach (var e in EnemiesToDelete)
            {
                if (EnemiesList.Contains(e))
                {
                    EnemiesList.Remove(e);
                    Destroy(e.gameObject);
                }
            }
        }
Example #7
0
    // Update is called once per frame
    void Update()
    {
        transform.Translate(dir * speed);
        if ((transform.position.y) >= ScreenHeight - 2 || transform.position.y <= (-ScreenHeight / 2) - yScale * 2) //When bullets Y position is greater than ScreensHeight
        {
            gameObject.SetActive(false);                                                                            //Disable gameObject aka bullet
        }
        //COLLISIONS
        if (PlayerBullet && ship != null)
        {
            for (int i = 0; i < EnemiesList.Count; i++)
            {
                _Target = EnemiesList[i].gameObject;
                if (_Target != null)                                                                // Checks to avoid missingexception
                {
                    Enemies enemy    = _Target.GetComponent <Enemies>();                            // creates enemies instance that access referance that allows access to methods and variables within _Target
                    float   distance = (transform.position - _Target.transform.position).magnitude; //creates a float which stores position between 2 variables
                    //print(_Target); //check the distance between two vectors
                    if (distance <= 0.5f && bullet.alive)                                           // Checks to avoid missingexception
                    {
                        gameObject.SetActive(false);                                                //Disable gameObject aka bullet
                        bullet.alive = false;                                                       //Disable the bullet
                        enemy.Enemyrend.material.color = Color.red;                                 //
                        enemy.SubtractLife(_Target);                                                //access enemy referance and use Subtract method to take HP away from _Target
                    }

                    //Score if killed
                    if (enemy.Health == 0)
                    {
                        enemy.rend.material.color = enemy.color;                      //set referance back to original colour so check below for enemytype[1] works
                        Message("+" + enemy.pointvalue, enemy.transform.position);
                        ChangeScore(enemy.pointvalue);
                        enemy.alive = false;
                        enemy.Enemy.GetComponent <MeshRenderer>().enabled = false;

                        //parts.transform.parent = null;//Breaks particles away from Enemy
                        GameObject parts = _Target.transform.FindChild("p").gameObject;
                        parts.transform.parent = ParticleManager.transform;
                        parts.SetActive(true);
                        //enemy.CreateParticles(transform.position, enemycolour, enemy.speed, 20); // Feed in particles spawn area, color and take in speed for effects
                        EnemiesList.Remove(_Target.gameObject);                         //Remove enemy Gameobject from List, also avoids missingexception

                        if (enemy.rend.material.color == EnemyType[1])
                        {
                            int spawn = Random.Range(0, 100);
                            if (spawn <= 75)
                            {
                                return;
                            }
                            else
                            {
                                CreateBonus(_Target.transform.position);
                            }
                        }
                    }
                }                          //end _Target if
            }                              //end For loop
                                           //
        }
        if (!PlayerBullet && ship != null) //Enemie bullet collision
        {
            _Target = ship.gameObject;
            float distance = (_Target.transform.position - this.transform.position).magnitude;
            //print(distance);
            rend.material.SetColor("_TintColor", new Color(166f / 255f, 255f / 255f, 0f / 255f, 1)); //Greenish goo
            if (distance <= 0.55f && bullet.alive)                                                   // Checks to avoid missingexception
            {
                c = GameObject.Find("Ship/Shield");
                if (c)
                {
                    bullet.gameObject.SetActive(false);
                    bullet.alive = false;
                    killplayer(c);
                    return;
                }
                else
                {
                    bullet.gameObject.SetActive(false);
                }
                bullet.alive = false;
                killplayer(_Target);
            }
        }
        if (PlayerBullet)                                                                              //If Ship shoots the bullet
        {
            rend.material.SetColor("_TintColor", new Color(255f / 255f, 255f / 255f, 255f / 255f, 1)); // Blue
            if (mycooldown <= 5)
            {
                transform.position += transform.right * Mathf.Sin(Time.time * 10) * 0.02f;                  //Awesome sine wave
            }
        }
        //COLLISIONS
    }    //end update