#東方弾幕風 #Title[コピーオブジェクト弾幕NWAY] #Text[コピーオブジェクト弾幕NWAY] #Image[] #BackGround[] #BGM[] #PlayLevel[Normal] #Player[REIMU,MARISA] #ScriptVersion[2] script_enemy_main { @Initialize { //敵出現時に一度だけ実行される部分 SetX(GetCenterX); SetY(GetClipMinY+120); SetLife(2000); LoadGraphic("script\img\ExRumia.png"); SetTexture("script\img\ExRumia.png"); SetGraphicRect(0, 0, 63, 63); Main; Main2; } @MainLoop { //敵のライフが0になるまで、この部分が1フレームに1回実行 SetCollisionA(GetX, GetY, 24); SetCollisionB(GetX, GetY, 24); yield; } @DrawLoop { //描画ループ。1フレームに1回実行 DrawGraphic(GetX, GetY); } @Finalize { //敵が消滅した瞬間に一度だけ実行される部分 DeleteGraphic("script\img\ExRumia.png"); } @BackGround { //スペルカード時の背景部分 //無くてもよい } task Main{ loop(100){yield;} loop{ loop(10){ let angle=-120; while(angle<=-60){ obj_shot(GetX,GetY,3,angle); angle+=15; } loop(10){yield;} } loop(100){yield;} } }//いらないものを削った task Main2{ loop(100){yield;} let angle2=0; while(angle2<360){ LaserObject(GetX,GetY,100,10,angle2,RED04); angle2+=90; } } task obj_shot(let set_x,let set_y,let speed,let angle){ let obj=Obj_Create(OBJ_SHOT);//この変数はこのタスク内のみで有効。よって[i]は不要。 ObjShot_SetGraphic(obj,BLUE21); Obj_SetPosition(obj,set_x,set_y); Obj_SetSpeed(obj,speed); Obj_SetAngle(obj,angle); let count=0; while(!Obj_BeDeleted(obj)){ if (count < 1) { if (Obj_GetX(obj)<=GetClipMinX || Obj_GetX(obj)>=GetClipMaxX) { Obj_SetAngle(obj,180-Obj_GetAngle(obj)); count++; }//せっかくだからまとめておいた。 if (Obj_GetY(obj)<=GetClipMinY) { Obj_SetAngle(obj,-Obj_GetAngle(obj)); count++; } } yield;//忘れもの。無いと無限ループでフリーズする。 } } task LaserObject(let x,let y,let laser_length,let laser_width,let angle3,let color){ let angle3=0; let obj=Obj_Create(OBJ_LASER); Obj_SetPosition(obj,x,y); ObjShot_SetGraphic(obj,color); Obj_SetSpeed(obj,0); Obj_SetAngle(obj,angle3); ObjLaser_SetLength(obj,laser_length); ObjLaser_SetWidth(obj,laser_width); let count2=0; loop{ count2++; if(count2<200){ Obj_SetPosition(obj,x,y); Obj_SetAngle(obj,angle3); ObjLaser_SetWidth(obj,2); Obj_SetCollisionToPlayer(obj,false); ObjLaser_SetSource(obj,false); } if(count2>=200){ Obj_SetPosition(obj,x,y); Obj_SetAngle(obj,angle3); ObjLaser_SetWidth(obj,laser_width); Obj_SetCollisionToPlayer(obj,true); ObjLaser_SetSource(obj,false); } if(count2==400){count2=0;} angle3++;if(angle3>360){angle3=0} yield; } } }