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