#東方弾幕風 #Title[GetAngleToObjToEnemy] #Text[オブジェクトから敵への角度] #Player[FREE] #PlayLevel[検証中] #BackGround[User()] #ScriptVersion[2] script_enemy_main { let Current=GetCurrentScriptDirectory; let IMG=Current~"img\ExRumia.png"; // オブジェクトから敵位置までの角度表示用変数 let Obj_To_Enemy_Angle = 0; @Initialize { SetX(GetCenterX); SetY(GetClipMinY + 112); SetLife(2000); SetGraphicRect(0, 0, 64, 64); LoadGraphic(IMG); SetTexture(IMG); main; } @MainLoop { yield; } @DrawLoop { DrawGraphic(GetX, GetY); // オブジェクト弾から敵位置までの角度を表示 DrawText(Obj_To_Enemy_Angle, 50, 50 ,20, 255); } @Finalize { DeleteGraphic(IMG); } task main { yield; Create_Obj_Shot; } task Create_Obj_Shot{ // オブジェクト弾の作成 let Obj = Obj_Create(OBJ_SHOT); ObjShot_SetDelay(Obj, 10); ObjShot_SetGraphic(Obj, RED03); Obj_SetPosition(Obj, rand_int(GetClipMinX, GetClipMaxX), rand_int(GetClipMinY, GetClipMaxY)); Obj_SetSpeed(Obj, 3); Obj_SetAngle(Obj, rand_int(0, 360)); // オブジェクト弾が消えていなければ while(!Obj_BeDeleted(Obj)){ // 指定範囲内でオブジェクト弾から敵位置までの角度を算出(矩形) if(Obj_GetX(Obj) <= GetX + 100 && Obj_GetX(Obj) >= GetX - 100 && Obj_GetY(Obj) <= GetY + 100 && Obj_GetY(Obj) >= GetY - 100){ Obj_To_Enemy_Angle = atan2(Obj_GetY(Obj) - GetY, Obj_GetX(Obj) - GetX); } yield; } // オブジェクト弾が消えれば新しくオブジェクト弾を作成(無限ループ) Create_Obj_Shot; } }