Esempio n. 1
0
 public void RemoveEnemyGrunt(GruntController removee)
 {
     enemies.Remove(removee.GetComponent <Collider>());
     UpdateGruntEnemyLists(removee.GetComponent <Collider>());
     removee.Die();
 }
Esempio n. 2
0
    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;
    }