#東方弾幕風 #Title[テストスクリプト] #Text[] #Image[] #BackGround[] #ScriptVersion[2] script_enemy_main { let imgExRumia=GetCurrentScriptDirectory~"img\ExRumia.png"; let csd = GetCurrentScriptDirectory; let shotData = csd ~ "data_usershot.txt"; @Initialize() { SetLife(2000);//敵のライフを2000に設定 SetGraphicRect(64,1,127,64);//描画元の矩形を(64,1)-(127,64)に設定 LoadGraphic(imgExRumia);//画像「img\ExRumia.png」を読みこむ LoadUserShotData(shotData); TMain; } @MainLoop() { SetCollisionA(GetX(),GetY(),32);//敵の座標に当たり判定を登録 SetCollisionB(GetX(),GetY(),24);//敵の座標に当たり判定(体当たり用)を登録 yield;//毎フレームタスク復帰 } @DrawLoop() { SetTexture(imgExRumia); DrawGraphic(GetX(),GetY());//敵の座標にExルーミアを描画; } @Finalize() { DeleteGraphic(imgExRumia); } //------------------------------------------------------- //メインタスク task TMain { yield; SetMovePosition02(GetCenterX, GetClipMinY +120, 1); wait(5); loop { Tstar; wait(400); } } task Tstar { let id = 0; let count = 1; let i = 0; let I = 0; let ang_star = [0 ,0 ,0 ,0 ,0]; let obj = [Obj_Create(OBJ_SHOT) ,Obj_Create(OBJ_SHOT) ,Obj_Create(OBJ_SHOT) ,Obj_Create(OBJ_SHOT) ,Obj_Create(OBJ_SHOT)]; let obj2 = [Obj_Create(OBJ_LASER) ,Obj_Create(OBJ_LASER) ,Obj_Create(OBJ_LASER) ,Obj_Create(OBJ_LASER) ,Obj_Create(OBJ_LASER)]; let color = [0 ,0 ,0 ,0 ,0]; loop(5) { //星の数 let spd = 6; color[I] = rand(161,168); //星オブジェクト制御 Obj_SetPosition(obj[I] ,GetX() ,GetY()); ObjShot_SetGraphic(obj[I] ,color[I]); ObjShot_SetBombResist(obj[I] ,true); Obj_SetAngle(obj[I] ,GetAngleToPlayer); Obj_SetSpeed(obj[I] ,spd); ang_star[i] = Obj_GetAngle(obj[i]); let d = ((GetPlayerX() -GetX())^2 + (GetPlayerY() -GetY())^2)^(1/2); wait(d/spd -7);//敵から自機の距離まで進む while(Obj_GetSpeed(obj[I]) > 0) { Obj_SetSpeed(obj[I] ,spd); spd -= 0.5; wait(1); } if(count == 5) { //レーザーと破裂 let n = 0; i = 0; I = 0; count = 1; loop(5) { Obj_SetPosition(obj2[n] ,GetX() ,GetY()); ObjShot_SetDelay(obj2[n] ,40); ObjShot_SetGraphic(obj2[n] ,187); ObjLaser_SetSource(obj2[n] ,false); if(count == 1) { ObjLaser_SetSource(obj2[n] ,true); } Obj_SetAngle(obj2[n] ,Obj_GetAngle(obj[I])); ObjLaser_SetLength(obj2[n] ,400); ObjLaser_SetWidth(obj2[n] ,12); if(count == 5) { I = 0; n = 0; wait(41); loop(5) { if(true) { let a = rand(0,10); let ang = 0; while(ang < 360) { Obj_Delete(obj[I]); ObjShot_FadeDelete(obj2[n]); CreateShotA(id ,Obj_GetX(obj[I]) ,Obj_GetY(obj[I]) ,30); SetShotDataA(id ,0 ,4 ,ang+a ,0 ,0 ,4 ,color[I] -8); SetShotDataA(id ,20 ,0.3 ,NULL ,0 ,0 ,4 ,color[I] -8); FireShot(id); ang +=8; } } I ++; n ++; } } i ++; I ++; n ++; count ++; }//loop(5) }//レーザー i ++; I ++; count ++; }//loop(5) } // w フレームだけ待つ function wait(w) { loop(w) { yield; } } }