// 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
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); } } }
// 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