#東方弾幕風 #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); Tstar; } task Tstar { let r = 70; //半径 loop { loop(100) { let ang = 180; let obj = Obj_Create(OBJ_SHOT); Obj_SetX(obj ,GetX()); Obj_SetY(obj ,GetY() +r); Obj_SetSpeed(obj ,2*r*3.14/360 *1);//円周を360等分 ObjShot_SetGraphic(obj ,163); loop(360) { Obj_SetAngle(obj ,ang); ang += 1; wait(1); if(ang-(180+270)+90 == atan2(GetPlayerY() -Obj_GetY(obj) ,GetPlayerX() -Obj_GetX(obj))) { Obj_SetAngle(obj ,atan2(GetPlayerY() -Obj_GetY(obj) ,GetPlayerX() -Obj_GetX(obj))); break; } } wait(100); } }//Masterloop }//task // w フレームだけ待つ function wait(w) { loop(w) { yield; } } }