#東方弾幕風 #Title[渦弾] #Text[テストスクリプト] #ScriptVersion[2] #BackGround[] script_enemy_main { let imgBoss = "script\img\ExRumia.png"; let Phi=(1+5^0.5)/2; @Initialize { SetX(GetCenterX); SetY(GetCenterY); SetLife(2500); SetTimer(90); SetDamageRate(50,50); SetInvincibility(180); LoadGraphic(imgBoss); SetTexture(imgBoss); SetGraphicRect(0, 0, 63, 63); TMain; } @MainLoop { SetCollisionA(GetX, GetY, 24); SetCollisionB(GetX, GetY, 24); yield; } @DrawLoop { DrawGraphic(GetX, GetY); } @Finalize { DeleteGraphic(imgBoss); } task TMain{ loop{ let angle =rand(-15,15); Spilal_Shot(GetX, GetY, rand(165,195), 2, PURPLE03, 2); Spilal_Shot(GetX, GetY, rand(-15,15), 2, PURPLE03, 2); loop(360){ yield; } } } //渦弾 task Spilal_Shot(x,y,angle,spd,color,s){ //オブジェクト弾の作成 let obj = Obj_Create(OBJ_SHOT); //パラメータの設定 Obj_SetPosition(obj, x, y); Obj_SetAngle(obj, angle); Obj_SetSpeed(obj, spd); ObjShot_SetGraphic(obj, color); ObjShot_SetDelay(obj, 10); Obj_SetAutoDelete(obj,true); ObjShot_SetBombResist(obj,true); loop(10){ yield; } let l=0; while(!Obj_BeDeleted(obj)) {//軌道の変化はここに記述 let v = 0; loop{ Obj_SetAngle(obj, angle); angle-=s/(Phi)^v; if(l%140==0){v=v+1;} if(l%30==0){ Spilal_Shot_s(Obj_GetX(obj), Obj_GetY(obj), Obj_GetAngle(obj)-rand(85,95), 2, BLUE02, 0.8); Spilal_Shot_s(Obj_GetX(obj), Obj_GetY(obj), Obj_GetAngle(obj)+rand(85,95), 2, BLUE02, 0.8); } if(Obj_BeDeleted(obj)) { Obj_Delete(obj); } l ++; yield; } yield; } yield; } //渦弾が吐き出す弾 task Spilal_Shot_s(x,y,angle,spd,color,s){ //オブジェクト弾の作成 let obj = Obj_Create(OBJ_SHOT); //パラメータの設定 Obj_SetPosition(obj, x, y ); Obj_SetAngle(obj, angle); Obj_SetSpeed(obj, spd); ObjShot_SetGraphic(obj, color); ObjShot_SetDelay(obj, 30); Obj_SetAutoDelete(obj,true); loop(30){ yield; } let l=0; while(!Obj_BeDeleted(obj)) {//軌道の変化はここに記述 let v = 0; loop(600){ Obj_SetAngle(obj, angle); angle-=s*Phi^v; if(l%180==0){v=v+1;} if(l>=200){ObjShot_SetGraphic(obj, BLUE01);} if(l>=400){ObjShot_SetGraphic(obj, BLUE05);} if(Obj_BeDeleted(obj)) { Obj_Delete(obj); } l ++; yield; } Obj_Delete(obj); yield; } yield; } }