スクリプトショットを利用した反射弾


サンプル「スクリプトショットを利用した反射弾」
sample05.txt
[右クリックで「対象をファイル保存」で東方弾幕風のscriptフォルダに保存してください]

sample
sample05.txtより抜粋
let han=0;//反射回数初期値
(中略)
    if(han<1)//最大反射回数の設定
    {
        if(GetX()<=GetClipMinX())//左端反射
        {SetAngle(180-GetAngle());han++;}
        if(GetX()>=GetClipMaxX())//右端反射
        {SetAngle(180-GetAngle());han++;}
        if(GetY()<=GetClipMinY())//上端反射
        {SetAngle(-GetAngle());han++;}
    }
簡単、画面端にきたら反射するだけ
SetShotDataAで設定する反射弾は非常に軽量ではあるがいろいろと応用が利きにくい
サンプルでは下端反射がないが

if(GetY()<=GetClipMaxY())//下端反射
{SetAngle(-GetAngle());han++;}

を追加すれば下端反射も可能
当然反射させたくない場合そこの行を削ればいい
if(GetX()<=GetClipMinX())//左端反射
{
    SetAngle(GetAngleToPlayer());//反射角をミラー反射ではなく自機ねらい
    SetSpeed(0.8);//反射後スピード変更
    PlaySE(反射音);//あらかじめロードしておく必要がある
    SetDefault(RED11);//反射後弾の画像変更
    han++;
}

スクリプトショットを利用した場合
上記のように非常にバリエーションのあるものができる

しかしながらスクリプトショットはCPU負荷が大きいため大量に撒くことは避けたい
そこで反射一回だけならこう書き換えると少し軽くなる

if(GetX()<=GetClipMinX())//左端反射
{
    CreateShot01(GetX(),GetY(),GetSpeed(),180-GetAngle(),WHITE11,0);
    End();
}
反射後は通常の弾となるため少し軽くなる


戻る