#東方弾幕風 #Title[質問を勝手に解釈] #Text[] #ScriptVersion[2] script_enemy_main { let imgBoss = "script\img\ExRumia.png"; @Initialize { SetX(GetCenterX); SetY(GetClipMinY + 120); SetLife(2000); LoadGraphic(imgBoss); SetTexture(imgBoss); SetGraphicRect(0, 0, 63, 63); MainTask; } //メインタスク task MainTask { loop(60){yield;} TaskLaser1; TaskLaser2; TaskShot; } //タスクその1 task TaskLaser1 { let id = 0; let time = 60; CreateLaserA(id, GetX, GetY, 400, 18, RED01,time); SetLaserDataA(id, 0, 0, 2, 0, 0, 0); FireShot(id); //loop(60){yield;}//不要だったのでコメントアウト } //タスクその2 task TaskLaser2 { //yield;//必要かどうか微妙 let id = 0; let time = 60; CreateLaserA(id, GetX, GetY, 120, 18, BLUE01,time); SetLaserDataA(id, 0, 0, -1, 0, 0, 0); FireShot(id); //loop(60){yield;}//不要だったのでコメントアウト } //タスクその3 task TaskShot { //yield;//必要かどうか微妙 let id = 0; let angle=-180; let count = 0; loop { if(count>=40 && count%15==0) //countが40以上でありcount/15の余りが0である場合 { while(angle<180) //angleが180より小さい場合 { CreateShotA(id,GetX,GetY,20); SetShotDataA(id,0,1,angle,0,0,0,RED01); FireShot(id); angle+=30;//angle増加 } angle=-180;//angleを初期値に戻す } count++;//count値の増加 yield; } } @MainLoop { SetCollisionA(GetX, GetY, 24);SetCollisionB(GetX, GetY, 24);//当たり判定 yield; } @DrawLoop {DrawGraphic(GetX, GetY);} @Finalize {DeleteGraphic(imgBoss);} }//[EndOfFile]