// Update is called once per frame
    void Update()
    {
        if (restShotCount > 0)
        {
            restInterval -= Time.deltaTime;

            while (restShotCount > 0 && restInterval <= 0)
            {
                if (bulletType == BulletType.WashingMachineSpiralBullets)
                {
                    if (timer < wInterval_1)
                    {
                        shotAngleRate   = maxShotAngleRate;
                        bulletAngleRate = -maxBulletAngleRate;
                    }
                    else if (timer < wInterval_1 + wInterval_2)
                    {
                        shotAngleRate   = maxShotAngleRate * (wInterval_1 + (wInterval_2 / 2) - timer) / (wInterval_2 / 2);
                        bulletAngleRate = -maxBulletAngleRate * (wInterval_1 + (wInterval_2 / 2) - timer) / (wInterval_2 / 2);
                    }
                    else if (timer < wInterval_1 + wInterval_2 + wInterval_3)
                    {
                        shotAngleRate   = -maxShotAngleRate;
                        bulletAngleRate = maxBulletAngleRate;
                    }
                    else
                    {
                        shotAngleRate   = -maxShotAngleRate * (wInterval_1 + wInterval_2 + wInterval_3 + (wInterval_4 / 2) - timer) / (wInterval_4 / 2);
                        bulletAngleRate = maxBulletAngleRate * (wInterval_1 + wInterval_2 + wInterval_3 + (wInterval_4 / 2) - timer) / (wInterval_4 / 2);
                    }
                }
                else if (bulletType == BulletType.WinderBullet)
                {
                    shotAngle = shotAngleBase + winderAngleRange * Mathf.Sin(Mathf.PI * 2 * timer / cycle);
                }

                for (int i = 0; i < lineCount; i++)
                {
                    if (bulletType == BulletType.PatternBullets)
                    {
                        if (splitedData[restShotCount - 1][i].Equals('0'))
                        {
                            continue;
                        }
                    }

                    EnemyBullet bullet = null;

                    /*
                     * //ここよくわからん
                     * foreach (var b in bulletPool) {
                     *      if (!b.enabled) {
                     *              bullet = b;
                     *              break;
                     *      }
                     * }
                     */
                    if (!bullet)
                    {
                        bullet = Instantiate(bulletPrefab);
                        bulletPool.Add(bullet);
                    }

                    if (bulletType == BulletType.RandomDiffusionBullets)
                    {
                        shotSpeed = _shotSpeed + Random.Range(randomRangeMin, randomRangeMax);
                    }

                    bullet.transform.position = transform.position;
                    bullet.transform.rotation = transform.rotation;
                    bullet.shotSpeed          = shotSpeed;
                    bullet.shotAngle          = shotAngle;
                    if (bulletType == BulletType.NWayBullets ||
                        bulletType == BulletType.CircularBullet ||
                        bulletType == BulletType.AimNWayBullets ||
                        bulletType == BulletType.AimRandomNWayBullets ||
                        bulletType == BulletType.RandomCircularBullet ||
                        bulletType == BulletType.RotationNWayBullets ||
                        bulletType == BulletType.WavyNWayBullets ||
                        bulletType == BulletType.WavyCircularBullet ||
                        bulletType == BulletType.DiffusionBullets ||
                        bulletType == BulletType.RandomDiffusionBullets ||
                        bulletType == BulletType.OvertakingBullets ||
                        bulletType == BulletType.CurveOvertakingBullets ||
                        bulletType == BulletType.GuidedMissile ||
                        bulletType == BulletType.PatternBullets)
                    {
                        if (bulletType == BulletType.AimNWayBullets ||
                            bulletType == BulletType.AimRandomNWayBullets ||
                            bulletType == BulletType.GuidedMissile)
                        {
                            shotAngle = bullet.SetTarget(targetTag, guideTime);
                        }

                        if (lineCount != 1)
                        {
                            float addAngle = (shotAngleRange / lineCount);
                            bullet.shotAngle -= (shotAngleRange / 2.0f);
                            bullet.shotAngle += addAngle * i;
                        }

                        if (bulletType == BulletType.AimRandomNWayBullets ||
                            bulletType == BulletType.RandomCircularBullet)
                        {
                            bullet.shotAngle += Random.Range(-randomRange / 2, randomRange / 2);
                        }
                        else if (bulletType == BulletType.WavyNWayBullets ||
                                 bulletType == BulletType.WavyCircularBullet)
                        {
                            bullet.shotAngle += wavingAngleRange * Mathf.Sin(Mathf.PI * 2 * timer / cycle);
                        }
                    }
                    else
                    {
                        bullet.shotAngle = shotAngle + (i * (360.0f / lineCount));
                    }
                    bullet.bulletSpeedRate = bulletSpeedRate;
                    bullet.bulletAngleRate = bulletAngleRate;

                    bullet.Calc();
                    bullet.Wakeup();
                }

                if (bulletType == BulletType.SpiralBullet ||
                    bulletType == BulletType.MultidirectionalSpiralBullet ||
                    bulletType == BulletType.TurningAcceleratingSpiralBullet ||
                    bulletType == BulletType.TurningAcceleratedCircularBullet ||
                    bulletType == BulletType.WashingMachineSpiralBullets ||
                    bulletType == BulletType.RotationNWayBullets ||
                    bulletType == BulletType.CurveOvertakingBullets)
                {
                    shotAngle += shotAngleRate;
                }
                if (bulletType == BulletType.DiffusionBullets ||
                    bulletType == BulletType.OvertakingBullets ||
                    bulletType == BulletType.CurveOvertakingBullets)
                {
                    shotSpeed += shotSpeedRate;
                }

                restShotCount--;
                restInterval = shotInterval;
            }
        }

        UpdateTimer();
    }