示例#1
0
 public void Attack()
 {
     Debug.Log(leader.name + " giving attack command to grunts!");
     leader.grunts = leader.gruntSlotList.GetComponent <GruntSlotList>().GetGrunts();
     if (leader.grunts != null)
     {
         foreach (GameObject grunt in leader.grunts)
         {
             grunt.GetComponent <GruntController>().Attack(leader.enemies);
         }
     }
     leader.AnimTimer(1, "AttackAnim");
 }
示例#2
0
    void Shoot(GameObject target)
    {
        if (target != null)
        {
            //Accuracy calculations
            Vector3    deviation3D = Random.insideUnitCircle * leader.accuracy;
            Quaternion rot         = Quaternion.LookRotation(Vector3.forward + deviation3D);
            Vector3    fwd         = leader.transform.rotation * rot * Vector3.forward;

            //Shooting ray
            RaycastHit hit;
            Debug.DrawRay(leader.transform.position, fwd * 100, Color.red, 0.5f);
            if (Physics.Raycast(leader.transform.position, fwd, out hit, 100))
            {
                if (hit.transform.tag == leader.enemyTag)
                {
                    if (hit.transform.GetComponent <StatePatternLeader>())  //if target is a leader
                    {
                        StatePatternLeader enemyLeader = hit.transform.GetComponent <StatePatternLeader>();
                        enemyLeader.health -= 25;
                        if (enemyLeader.health < 1)
                        {
                            leader.RemoveEnemyLeader(enemyLeader);
                        }
                    }
                    else if (hit.transform.GetComponent <GruntController>())    //if target is a grunt
                    {
                        GruntController enemyGrunt = hit.transform.GetComponent <GruntController>();
                        enemyGrunt.health -= 25;
                        if (enemyGrunt.health < 1)
                        {
                            leader.RemoveEnemyGrunt(enemyGrunt);
                        }
                    }
                }
            }
        }
        leader.AnimTimer(1, "ShootAnim");
    }