public void RemoveEnemyLeader(StatePatternLeader removee) { enemies.Remove(removee.GetComponent <Collider>()); UpdateGruntEnemyLists(removee.GetComponent <Collider>()); removee.Die(); }
void Shoot() { if (shootTarget != null) { //Accuracy calculations Vector3 deviation3D = Random.insideUnitCircle * accuracy; Quaternion rot = Quaternion.LookRotation(Vector3.forward + deviation3D); Vector3 fwd = transform.rotation * rot * Vector3.forward; //Shooting ray RaycastHit hit; Debug.DrawRay(transform.position, fwd * 100, Color.red, 0.5f); if (Physics.Raycast(transform.position, fwd, out hit, 100)) { if (hit.transform.tag == enemyTag) { if (hit.transform.GetComponent <StatePatternLeader>()) //if target is a leader { StatePatternLeader enemyLeader = hit.transform.GetComponent <StatePatternLeader>(); enemyLeader.health -= 10; if (enemyLeader.health < 1) { if (currentLeader != null) { currentLeader.RemoveEnemyLeader(enemyLeader); } else { if (enemyLeader != null) { enemyList.Remove(enemyLeader.GetComponent <Collider>()); enemyLeader.Die(); } } } } else if (hit.transform.GetComponent <GruntController>()) //if target is a grunt { GruntController enemyGrunt = hit.transform.GetComponent <GruntController>(); enemyGrunt.health -= 10; if (enemyGrunt.health < 1) { if (currentLeader != null && enemyList.Contains(enemyGrunt.GetComponent <Collider>())) { currentLeader.RemoveEnemyGrunt(enemyGrunt); } else { if (enemyGrunt != null) { enemyList.Remove(enemyGrunt.GetComponent <Collider>()); enemyGrunt.Die(); } } } } } } } nextShootTime = Time.time + 1; }