コード例 #1
0
    IEnumerator HomingShoot()
    {
        int targetNums = targetsTrans.Count;
        int laserNums  = 0;

        GetComponent <AudioSource>().PlayOneShot(this.myClips[0]);

        for (int i = 1; i < laserPort.Length; i++)
        {
            GameObject   laserObj = BulletPool.Instance.GetBullet(this.laserPort[i], "HomingLaser_Player"); //Instantiate(laserPrefab, this.laserPort[i].position, this.laserPort[i].rotation) as GameObject;
            HomingLaser2 homing   = laserObj.GetComponent <HomingLaser2>();

            if (targetNums > 0)
            {
                laserNums         %= targetNums;
                homing.targetObj   = targetsTrans[laserNums].gameObject;
                homing.targetLayer = "Enemys";
                homing.detectRange = 0.1f;
                //homing.damage = 50.0f;
                laserNums++;
            }

            yield return(new WaitForSeconds(fireSec));
        }

        if (targetsTrans.Count > 0)
        {
            for (int i = 0; i < targetsTrans.Count; i++)
            {
                targetsTrans[i].gameObject.SendMessage("OffTarget", SendMessageOptions.DontRequireReceiver);
            }
            targetsTrans.Clear();
        }
    }
コード例 #2
0
    IEnumerator Fire()
    {
        for (int i = 0; i < laserPort.Length * 2; i++)
        {
            int count = i;
            count %= 11;
            if (laserPort[count].name.Equals("LaserPort") == false)
            {
                Debug.Log(count.ToString());
                GameObject   laserObj = BulletPool.Instance.GetBullet(this.laserPort[count], "HomingLaser_Player");
                HomingLaser2 homing   = laserObj.GetComponent <HomingLaser2>();

                homing.targetObj   = targetTrans.gameObject;
                homing.targetLayer = "Ship";
                homing.detectRange = 0.1f;
                homing.damage      = 3.0f;
                GetComponent <AudioSource>().PlayOneShot(this.myClip[1]);
                yield return(new WaitForSeconds(0.05f));
            }
        }
        myParticle.Stop();
    }
コード例 #3
0
    IEnumerator SpecialAttack_HomingLaser()
    {
        Debug.Log("Warning!");
        yield return(new WaitForSeconds(0.3f));

        targetTrans.Clear();

        Collider[] hitCols;
        hitCols = Physics.OverlapSphere(this.transform.position, 300, myLayerMask);
        Debug.Log(hitCols.Length.ToString());
        //for (int i = 0; i < angles.Count; i++)
        //{
        //    if (targets[i].gameObject.activeSelf==true && angles[i] < 30.0f)
        //    {
        //        targetTrans.Add(targets[i].transform);
        //    }
        //}

        if (hitCols.Length > 0)
        {
            //Debug.Log("add!");
            for (int i = 0; i < hitCols.Length; i++)
            {
                if (hitCols[i].CompareTag("Bullet"))
                {
                    continue;
                }

                //if (targets[i].gameObject.activeSelf == true && targetTrans.Contains(hitCols[i].transform) == false)
                if (targetTrans.Contains(hitCols[i].transform) == false)
                {
                    targetTrans.Add(hitCols[i].transform);
                }
            }



            int targetNums = targetTrans.Count;

            int count = 0;

            if (targetNums > 0)
            {
                spAttack = true;
                for (int i = 1; i < this.laserPort.Length; i++)
                {
                    //targetTrans[i]
                    GameObject   newBullet = BulletPool.Instance.GetBullet(this.laserPort[i], "HomingLaser_Boss");  //Instantiate(bulletPrefab, this.laserPort[i].position, this.laserPort[i].rotation) as GameObject;
                    HomingLaser2 homing    = newBullet.GetComponent <HomingLaser2>();


                    homing.targetObj   = targetTrans[count].gameObject;
                    homing.targetLayer = "Teams";
                    homing.moveSpeed   = 15.0f;
                    homing.rotateSpeed = 60.0f;
                    count++;
                    if (count >= targetNums)
                    {
                        count = 0;
                    }

                    GetComponent <AudioSource>().PlayOneShot(this.GetComponent <AudioSource>().clip);
                    yield return(new WaitForSeconds(0.2f));
                }
            }
        }
        else
        {
            yield return(null);
        }
    }