// 원형 발사 패턴 override public IEnumerator Pattern(Transform[] Launchers) { int amount = getAmount(Difficulty_Amount); Missile.GetComponent <Bullet_Straight_Script>().MoveSpeed = getSpeed(Difficulty_Speed); GameObject[] Target = GameObject.FindGameObjectsWithTag("Player"); float[] Angle = new float[2], AngleStore = { 999, 999 }; float interval; float period = 0.12f - 0.005f * Difficulty_Amount; Angle[0] = Bullet_Homing_Script.getAngle(Launchers[0].position, Target[Target.Length - 1].transform.position) - 45; Angle[1] = Angle[0] + 90; while (true) { interval = (Angle[1] - Angle[0]) / amount; for (int i = 0; i < amount; i++) { if (i >= 2) { Instantiate(Missile, Launchers[0].position, Quaternion.Euler(0, 0, Angle[0] + (i - 2) * interval)); } else if (AngleStore[i] < 512) { Instantiate(Missile, Launchers[0].position, Quaternion.Euler(0, 0, AngleStore[i])); } Instantiate(Missile, Launchers[0].position, Quaternion.Euler(0, 0, Angle[0] + i * interval)); yield return(new WaitForSeconds(period)); } AngleStore[0] = Angle[0] + (amount - 2) * interval; AngleStore[1] = Angle[0] + (amount - 1) * interval; Angle[0] = Angle[1]; Angle[1] = 360 - Bullet_Homing_Script.getAngle(Launchers[0].position, Target[Target.Length - 1].transform.position); if (Angle[1] > 360) { Angle[1] -= 360; } if (Angle[1] - Angle[0] > 0) { Angle[1] += 45; } else { Angle[1] -= 45; } } }
// 레이저 긁기 패턴 override public IEnumerator Pattern(Transform[] Launchers) { GameObject[] Target = GameObject.FindGameObjectsWithTag("Player"); float Angle, DirectionAngle; float WarningTime = 2f; int Direction = 1; while (true) { Angle = Bullet_Homing_Script.getAngle(Launchers[0].position, Target[Target.Length - 1].transform.position); WarningLine.GetComponent <Bullet_Laser_Script>().DestroyTime = WarningTime; Instantiate(WarningLine, Launchers[0].position, Quaternion.Euler(0, 0, -Angle)); Debug.Log("Player Position : " + Target[Target.Length - 1].transform.position.x + " " + Target[Target.Length - 1].transform.position.y + ", Angle : " + Angle); yield return(new WaitForSeconds(WarningTime)); DirectionAngle = Bullet_Homing_Script.getAngle(Launchers[0].position, Target[Target.Length - 1].transform.position); if (DirectionAngle - Angle < 0 || DirectionAngle - Angle > 180) { Laser.GetComponent <Bullet_Laser_Script>().Direction = 1; } else { Laser.GetComponent <Bullet_Laser_Script>().Direction = -1; } Laser.GetComponent <Bullet_Laser_Script>().DestroyTime = 999; Laser.GetComponent <Bullet_Laser_Script>().DragDegree = 4 * Difficulty_Amount; Laser.GetComponent <Bullet_Laser_Script>().DragSpeed = 0.05f * Difficulty_Speed; Laser.transform.localScale = new Vector3(1 + Difficulty_Amount, Laser.transform.localScale.y, Laser.transform.localScale.z); Instantiate(Laser, Launchers[0].position, Quaternion.Euler(0, 0, -Angle)); Debug.Log("Player Position : " + Target[Target.Length - 1].transform.position.x + " " + Target[Target.Length - 1].transform.position.y + ", Angle : " + DirectionAngle + ", Direction : " + Direction); yield return(new WaitForSeconds(1.8f - 0.2f * Difficulty_Amount)); } }