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