第12回

prev slash top slash next

第12回:冥符「常世桜」 2

ランダム蝶弾

今回はランダム蝶弾発射処理を実装しましょう。

Easyだと2way×2重,Normalだと4way×2重,Hardだと4way×3重,そんでLunaticが4way×4重です。
今回はNormalなので、4way×2重です。
nway弾を発射する部分は関数にまとめてしまいましょう。

function nway(x, y, speed, anglebase, way, span, color)
{
 let angle = anglebase - (way - 1) / 2 * span;
 loop(way)
 {
  CreateShot01(x, y, speed, angle, color, 10);
  angle += span;
 }
}

x, y:発射座標
speed:弾速
anglebase:発射角度
way:way数
span:弾同士の間隔
color:弾種

これでn-way弾を発射することが出来ます。
2重弾を発射する部分も関数にまとめてしまいましょう。

function shot(speed, way, nloop)
{
 let angle = rand(180-25, 360+25);
 loop(nloop)
 {
  nway(GetX, GetY, speed, angle, way, 10, BLUE22);
  speed-=0.5;
 }
}

speed:弾速
way:way数
nloop:何重弾にするか

次は、発射間隔を短くする処理です。
これは直接[Tmain]の中に書きましょう。

task Tmain
{
 SetMovePosition02(GetCenterX, GetCenterY, 60);
 wait(60);
 let frame = 50;
 loop
 {
  shot(4, 4, 2);//最高速度4,4way,2重弾を発射
  wait(frame);//frameフレームだけ待機
  if(frame>30){frame-=0.5;}//frameが30より大きいときだけframeの値を0.5ずつ引く
 }
}

これらを使って実際にスクリプトを書いてみましょう。

task Tmain
{
 SetMovePosition02(GetCenterX, GetCenterY, 60);
 wait(60);
 let frame = 50;
 loop
 {
  shot(4, 4, 2);
  wait(frame);
  if(frame>30){frame-=0.5;}
 }
}
function shot(speed, way, nloop)
{
 let angle = rand(180-25, 360+25);
 loop(nloop)
 {
  nway(GetX, GetY, speed, angle, way, 10, BLUE22);
  speed-=0.5;
 }
}
function nway(x, y, speed, anglebase, way, span, color)
{
 let angle = anglebase - (way - 1) / 2 * span;
 loop(way)
 {
  CreateShot01(x, y, speed, angle, color, 10);
  angle += span;
 }
}

これで常世桜っぽくなってきました。
次回は反射弾を実装してみましょう。


top
prev slash next
inserted by FC2 system