Beispiel #1
0
    // 원형 발사 패턴
    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));
        }
    }