
    //大きな花びら（葉？）の表現…なのだがいまいち
    task Tshot01(t, lnum, color){
        //let lnum = 8; //葉（？）の枚数
        let bnum = 30; //弾数
        
        ascent(n in 0..lnum){
            let tilt = n * 360/lnum + t;
            ascent(i in -bnum..bnum+1){
                Tshot01A(i, tilt, 1);
                Tshot01A(i, tilt, -1);
            }
        }
        //SetAction(ACT_SHOT_A, 40);
        
        task Tshot01A(i, tilt, sym){
            let provisional_angle = (90/bnum)*i; //座標位置を出すための仮の角度
            let spX = i^2 /60; //最高速はbnum^2 / 60
            let spY = i*cos(provisional_angle) /2.5;
            let sp = (spX^2 + spY^2)^0.5; //速度
            let angle = atan2(spY, spX); //射出角度
            angle += tilt; //傾きを加える
            
            CreateShotA(0, GetX, GetY, 0);
            SetShotDataA(0, 0, sp, angle, 0, -sp/20, 0, color); //射出
            SetShotDataA(0, 30, 3.2, tilt+30*sym, 0, -3.2/100, 0, color); //分離
            SetShotDataA(0, 130, 0, tilt, 0, 0, 0, color); //方向あわせ
            SetShotDataA(0, 150, 1, tilt, 0, (4-1)/30, 4, color); //進行
            FireShot(0);
        }
    }
    
    
    
    task Tshot02{
        let range = 40;
        let bx;
        let by;
        loop{ //bx,byを定める。なるべく満遍なくいくように
            bx = rand(-range, range);
            by = rand(-range, range);
            if((bx^2 + by^2)<=range^2){break;}
        }
        bx += GetX;
        by += GetY;
        let obj = Obj_Create(OBJ_SHOT);
        let color_num = rand_int(0,1);
        if(color_num == 0){ObjShot_SetGraphic(obj, YELLOW05);}
        else{ObjShot_SetGraphic(obj, ORANGE05);}
        Obj_SetPosition(obj, bx, by);
        Obj_SetSpeed(obj, 2);
        Obj_SetAngle(obj, -90);
        Obj_SetAccel(obj, -3/50, 0);
        wait(50 + 50);
        //このとき弾軍の中心位置は y= -2*50 + (1/2)*(2/50)*(50^2) + GetY = -100 + 50 + GetY
        let angle = GetAngleFromAToB(GetX,GetY-50,GetPlayerX,GetPlayerY);
        Obj_SetAngle(obj, angle);
        Obj_SetAccel(obj, 2/50, 2);
    }
    
    
    /*------------------便利関数------------------------*/
    /*オブジェクト弾に加速度を与える。accel:加速度　spMax:最大（最小）速度*/
    /*この間に他にて速度の変更をしないように*/
    task Obj_SetAccel(obj, accel, spMax){
        if(!(accel == 0)){ //加速度が与えられていない場合、この関数は無効
            let new_sp;
            loop{
                new_sp = Obj_GetSpeed(obj) + accel;
                if((spMax-new_sp)*accel<=0){Obj_SetSpeed(obj, spMax); break;}
                Obj_SetSpeed(obj, new_sp);
                yield;
            }
        }
    }
    
    /*AからみたBの角度を得る*/
    function GetAngleFromAToB(A_X, A_Y, B_X, B_Y)
    {return atan2(B_Y - A_Y, B_X - A_X);}
    
    /*------------------終わり--------------------------*/
    #include_function ".\lib_anime_Yuka.txt"
    #include_function ".\basic_function.txt"
    #include_function ".\data.txt"