#東方弾幕風 #Title[幻視] #Text[] #Image[] #BackGround[] #ScriptVersion[2] script_enemy_main { let imgExRumia=GetCurrentScriptDirectory~"img\ExRumia.png"; @Initialize() { SetLife(2000);//敵のライフを2000に設定 SetGraphicRect(64,1,127,64);//描画元の矩形を(64,1)-(127,64)に設定 LoadGraphic(imgExRumia);//画像「img\ExRumia.png」を読みこむ 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, GetCenterY, 1); wait(5); Twave(1 ,RED21); } //四角形タスク task Twave(v ,grf) { let ang_side = [0 ,90 ,180 ,270]; loop { let i = 0; loop(4) { let ang = -45; loop(90) { shot(ang ,v ,grf); ang ++; } } wait(100); } }//task //弾作成タスク function shot(ang ,v ,grf) { let obj = Obj_Create(OBJ_SHOT); Obj_SetX(obj ,GetX()); Obj_SetY(obj ,GetY()); Obj_SetAngle(obj ,ang); ObjShot_SetGraphic(obj ,grf); Obj_SetSpeed(obj ,sin(90)/sin(90 +ang)*v); } // w フレームだけ待つ function wait(w) { loop(w) { yield; } } }