#東方弾幕風 #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; } @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 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;//忘れもの。無いと無限ループでフリーズする。 } } }