花を降らす

次は花を降らせてみよう。
花のつぼみがくるくる回転しながら落ちていくような演出にする。
これまた雪を降らすスクリプトとほとんど一緒だ。

花粒.png
Flower


class 花粒クラス
{
  method 花粒クラス()
  {
    CreateImage(name="花"
      , ox="Center", oy="Middle", image="花粒.png", blend="Add");
  }

  method OnEnter()
  {
    // 回転し続ける
    Enter(to="*");
    while(true)
    {
      Rotate(angle=0);
      Rotate(time=3000, angle=360);
      wait 3000;
    }
  }
}

class 花クラス
{
  method 花クラス()
  {
  }

  method OnEnter()
  {
    int $number = 0;
    while(true)
    {
      string $name = "花粒"+String($number++);
      ThreadCreate(call=@花粒スレッド(name=$name));
      wait 75;
    }
  }

  method 花粒スレッド(string $name)
  {
    int $x = rand_range(0, 1280);
    percent $scale = Percent(0.2+frand()*0.8);

    CreateObject(name=$name
      , x=$x, y=-100, sx=$scale, sy=$scale, class=@花粒クラス());
    Enter(to=$name);

    int $time = rand_range(5000,20000);
    Move(to=$name, time=$time
      , x=$x, y=720+100);
    wait $time;
    Delete(to=$name);
  }
}

method Main()
{
  CreateColor(name="背景", w=1280, h=720, color=black);
  Enter(to="背景");

  CreateObject(name="花", class=@花クラス());
  Enter(to="花");
}
YouTube Preview Image

動きが激しすぎるせいか、動画重っ!

粒をイメージデーカーではなく、オブジェクトデーカーにしているのが特徴だ。
回転しつづける動きを粒自身にさせることで、
粒を降らせる部分のスクリプトをほとんどいじらずに済んでいる。

花粒クラスのRotate命令でtoを省略しているが、この場合”自身”を指す意味になる。


Leave a Reply

*