public override void Continue() { base.Continue(); for (var i = bullets.Count - 1; i >= 0; i--) { if (!Variables.StageBoundary.IsInBoundary(bullets[i].Position)) { // 画面外に出た弾を削除する bullets[i].Destroy(); bullets.RemoveAt(i); } } for (var i = acceralatingBullets.Count - 1; i >= 0; i--) { if (!Variables.StageBoundary.IsInBoundary(acceralatingBullets[i].Position)) { // 画面外に出た加速する弾を削除する acceralatingBullets[i].Destroy(); acceralatingBullets.RemoveAt(i); } } if (CurrentFrame >= 2000) { return; } var player = Variables.UserPosition.Get(); var boundary = Variables.StageBoundary.Get(); if (CurrentFrame % 12 == 0) { acceralatingBullets.Add(Factory.Generate(false, 0.0f, boundary.height / 2.0f, new Math.DegreesToRadius(currentDegrees).Radius, 0.0f)); currentDegrees += 9; } acceralatingBullets.ForEach(b => b.Speed += 0.025f); if (CurrentFrame % 250 == 0) { var span = 12; for (var deg = 0; deg <= 360; deg += span) { var offsetPositionA = new Math.CircleOffset(player.transform.position.x, player.transform.position.y, 30.0f, deg); var degreeToPlayer = new Math.RadiusAToB( player.transform.position.x, player.transform.position.y, offsetPositionA.Position.x, offsetPositionA.Position.y ); bullets.Add(Factory.Generate(true, offsetPositionA.Position.x, offsetPositionA.Position.y, degreeToPlayer.Radius, 0.1f)); } } }
public override void Continue() { base.Continue(); for (var i = bullets.Count - 1; i >= 0; i--) { if (!Variables.StageBoundary.IsInBoundary(bullets[i].Position)) { // 画面外に出た弾を削除する bullets[i].Destroy(); bullets.RemoveAt(i); } } if (CurrentFrame >= 500) { return; } //================================================== // 左から飛んでくる弾 //================================================== var boundary = Variables.StageBoundary.Get(); var player = Variables.UserPosition.Get(); if (CurrentFrame % 20 == 0) { var baseRadius = new Math.RadiusAToB( player.transform.position.x, player.transform.position.y, boundary.xMax, boundary.yMax ).Radius + new Math.DegreesToRadius(2).Radius; bullets.Add(Factory.Generate(false, boundary.xMax, boundary.yMax, baseRadius, 1.0f)); bullets.Add(Factory.Generate(false, boundary.xMax, boundary.yMax, baseRadius + new Math.DegreesToRadius(10).Radius, 1.0f)); bullets.Add(Factory.Generate(false, boundary.xMax, boundary.yMax, baseRadius + new Math.DegreesToRadius(-10).Radius, 1.0f)); } //================================================== // 右から飛んでくる弾 //================================================== if (CurrentFrame >= 40 && CurrentFrame % 20 == 0) { var baseRadius = new Math.RadiusAToB( player.transform.position.x, player.transform.position.y, boundary.xMin, Variables.StageBoundary.Get().yMax ).Radius + new Math.DegreesToRadius(-2).Radius; bullets.Add(Factory.Generate(false, boundary.xMin, boundary.yMax, baseRadius, 1.0f)); bullets.Add(Factory.Generate(false, boundary.xMin, boundary.yMax, baseRadius + new Math.DegreesToRadius(10).Radius, 1.0f)); bullets.Add(Factory.Generate(false, boundary.xMin, boundary.yMax, baseRadius + new Math.DegreesToRadius(-10).Radius, 1.0f)); } //================================================== // 真ん中から飛んでくる弾 //================================================== if (CurrentFrame >= 200 && CurrentFrame % 15 == 0) { var centerx = 0.0f; var radius = new Math.RadiusAToB( player.transform.position.x, player.transform.position.y, centerx, Variables.StageBoundary.Get().yMax ).Radius; bullets.Add(Factory.Generate(true, centerx, boundary.yMax, radius, 1.0f)); } }