#東方弾幕風 #Image[] #Title[無題] #Text[敵スクリプト練習] #ScriptVersion[2] script_enemy_main { let Rumia="script\img\ExRumia.png"; let Fam=GetCurrentScriptDirectory~"img\magiccircle.jpg"; @Initialize { SetX(GetCenterX); SetY(GetClipMinY+100); SetScore(110000); SetLife(2500); SetDamageRate(5,0); SetTimer(60); LoadGraphic(Rumia); SetTexture(Rumia); SetGraphicRect(0,0,64,64); TMain; } @MainLoop { SetCollisionA(GetEnemyX,GetEnemyY,10); SetCollisionB(GetEnemyX,GetEnemyY,10); yield; } @DrawLoop { DrawGraphic(GetEnemyX,GetEnemyY); } @Finalize { DeleteGraphic(Rumia); DeleteGraphic(Fam); } task TMain{//メインタスク loop(30){yield;} let AngEne=[0,180]; let LR=[0,1]; ascent(i in 0..2){ CreateEnemyFromScript("Familiar",GetEnemyX,GetEnemyY,3,AngEne[i],LR[i]); } loop(30){yield;} SetDamageRate(70,0); let count=0; loop{ yield; if(count%30==0){CShot(5,PURPLE11,count);} count++; } } function CShot(way,Graph,count){ let Spd=rand(2,3); let Ang=rand(85,95); let AngSpd=rand(-0.5,0.5); let late=0; let X=GetEnemyX; loop(way){ CreateShotA(01,X,GetEnemyY,0); SetShotDataA(01,0,0,Ang,0,0,0,Graph); SetShotDataA(01,late,Spd,Ang,0,0,0,Graph); SetShotDataA(01,late+20,Spd,Ang,AngSpd,0,0,Graph); FireShot(01); late+=10/Spd; if(count%60==0){X+=5;}else{X-=5;} } } } //使い魔 script_enemy Familiar { let Rumia=GetCurrentScriptDirectory~"img\023b.png"; @Initialize { SetX(GetX); SetY(GetY); SetAngle(GetAngle);//使い魔の SetSpeed(GetSpeed);//移動 SetLife(2000); SetDamageRate(0,0); LoadGraphic(Rumia); SetTexture(Rumia); SetGraphicRect(0,0,48,48); TMain; } @MainLoop { yield; } @DrawLoop { DrawGraphic(GetX,GetY); } task TMain{ let LR=GetArgument; let Graph=YELLOW02; if(LR==1){Graph=GREEN02;} let count=0; let stpfrm=100/GetSpeed;//使い魔の移動停止までの時間 loop{ yield; count++; if(count>=stpfrm){//100進んで停止 SetSpeed(0); break;} } let right=0; loop{ yield; if(count%10==0){TShot(0,Graph,LR,right);} count++; right++; } } task TShot(Spd2,Graph,LR,right){//落ちてく弾 let Spd1=rand(1,2); let Ang=rand(0,360); let Moved=0; let obj=Obj_Create(OBJ_SHOT); Obj_SetAngle(obj,Ang); Obj_SetPosition(obj,GetX,GetY); Obj_SetSpeed(obj,Spd1); ObjShot_SetGraphic(obj,Graph); loop{ if(Obj_BeDeleted(obj)){break;} yield; Moved++; if(Moved==30){ Obj_SetAngle(obj,90); Obj_SetSpeed(obj,Spd2); break;} } let Ac=0; loop{ if(Obj_BeDeleted(obj)){break;} yield; Obj_SetSpeed(obj,Spd2+Ac); if(Ac<8){Ac+=0.1;} if((Obj_GetY(obj)>=GetPlayerY)&&(Obj_GetY(obj)<=GetPlayerY+20)&&(right%30==0)){LasertoP(2,BLUE11,LR,obj);} } } function LasertoP(Spd,Graph,LR,obj){//自機狙いレーザー let Ang=0; if(LR==1){Ang=180;} if(LR==0){let GraphL=ORANGE11;} CreateLaser01(Obj_GetX(obj),Obj_GetY(obj),Spd,Ang,50,10,Graph,0); } }