//kabeP.pngなどから情報を取得。 public void LoadWallInfo(string stagename) { MenyBullets menybulletscomp = GetComponent <MenyBullets>(); //コンポーネント Loadpngs loadpngs = GetComponent <Loadpngs>(); // コンポーネント //壁xと速度を画像から取得 int[,] tmpbmp; tmpbmp = loadpngs.LoadBmp(Application.dataPath + "\\stage\\" + stagename + "\\kabex.bmp"); TexToKb(menybulletscomp.kbx, menybulletscomp.kkx, tmpbmp); //壁xと速度を画像から取得 tmpbmp = loadpngs.LoadBmp(Application.dataPath + "\\stage\\" + stagename + "\\kabey.bmp"); TexToKb(menybulletscomp.kby, menybulletscomp.kky, tmpbmp); //kabePの設定 tmpbmp = loadpngs.LoadBmp(Application.dataPath + "\\stage\\" + stagename + "\\kabep.bmp"); TexToKb_p(menybulletscomp.kbp, menybulletscomp.kkp, tmpbmp); tmpbmp = loadpngs.LoadBmp(Application.dataPath + "\\stage\\" + stagename + "\\kabew.bmp"); TexToKb_w(menybulletscomp.kbx, menybulletscomp.kby, menybulletscomp.kkx, menybulletscomp.kky, menybulletscomp.kbp, tmpbmp); menybulletscomp.kabePori.SetData(menybulletscomp.kbp); menybulletscomp.kabeX.SetData(menybulletscomp.kbx); menybulletscomp.kabeY.SetData(menybulletscomp.kby); menybulletscomp.YUN.SetData(menybulletscomp.kkx); menybulletscomp.YVN.SetData(menybulletscomp.kky); menybulletscomp.YPN.SetData(menybulletscomp.kkp); menybulletscomp.YPN.GetData(menybulletscomp.kbpori);//実質kbpori=kbp 配列子ぴ }
void LoadUfoColi()//bmpから見た目当たり判定の定義点をload { int[,] tmpbmp; Loadpngs loadpngs = GetComponent <Loadpngs>(); tmpbmp = loadpngs.LoadBmp(Application.dataPath + "\\Textures\\ufo\\ufocoli.bmp"); uint[] hostdata = new uint[1600]; for (int i = 0; i < 40; i++) { for (int j = 0; j < 40; j++) { int pixc = tmpbmp[i, j]; if (((pixc % 256) == 0) & ((pixc / 256 % 256) == 255) & ((pixc / 65536 % 256) == 0)) {//緑いろのところなら当たり判定定義点になる hostdata[ufocoli_count] = (uint)(i - 20 + 2048) + (uint)(j - 20 + 2048) * 4096; ufocoli_count++; } } } ufocoli = new Vector2[ufocoli_count]; // for (int i = 0; i < ufocoli_count; i++) { float fx = 0.25f * ((float)(hostdata[i] % 4096) - 2048.0f + 0.5f); float fy = 0.25f * ((float)((hostdata[i] / 4096) % 4096) - 2048.0f + 0.5f); ufocoli[i] = new Vector2(fx, fy); } }
void LoadUfoData()//bmpからload { int ufo_count = 0; int[,] tmpbmp; Loadpngs loadpngs = GetComponent <Loadpngs>(); tmpbmp = loadpngs.LoadBmp(Application.dataPath + "\\Textures\\ufo\\cfdcoli.bmp"); uint[] hostdata = new uint[144]; for (int i = 0; i < 12; i++) { for (int j = 0; j < 12; j++) { if ((tmpbmp[i, j] % 256) == 0) {//黒いところならCFD上で壁になる hostdata[ufo_count] = (uint)(i - 5 + 2048) + (uint)(j - 5 + 2048) * 4096; ufo_count++; } } } ufo_vram = new ComputeBuffer(ufo_count, Marshal.SizeOf(typeof(uint))); ufo_vram.SetData(hostdata, 0, 0, ufo_count); }
void LoadObjData()//bmpからload { int obj_count = 0; Loadpngs loadpngs = GetComponent <Loadpngs>(); int[,] tmpbmp = loadpngs.LoadBmp(Application.dataPath + "\\Textures\\stageobjs\\" + obj_bmp_id + "cfdcoli.bmp"); w = tmpbmp.GetLength(0); h = tmpbmp.GetLength(1); hostdata = new uint[w * h]; for (int i = 0; i < w; i++) { for (int j = 0; j < h; j++) { if ((tmpbmp[i, j] % 256) == 0) {//黒いところならCFD上で壁になる hostdata[obj_count] = (uint)(i - w / 2 + 2048) + (uint)(j - h / 2 + 2048) * 4096; obj_count++; } } } obj_vram = new ComputeBuffer(obj_count, Marshal.SizeOf(typeof(uint))); obj_vram.SetData(hostdata, 0, 0, obj_count); }
//RYS側からみたload。画像のうち255,0,255のところが粒子発生点になるのでそれを登録 public void LoadWallInfo2(string stagename) { DotParticle dtprtcomp = GetComponent <DotParticle>(); //コンポーネント dtprtcomp.someofRYS.dataxy_len = 0; //何度もloadwallするためこれは毎回リセット必要 Loadpngs loadpngs = GetComponent <Loadpngs>(); // コンポーネント //壁xと速度を画像から取得 int[,] tmpbmp; tmpbmp = loadpngs.LoadBmp(Application.dataPath + "\\stage\\" + stagename + "\\kabew.bmp"); int ginfo_g; for (int y = 0; y < Const.CO.WY; y++) { for (int x = 0; x < Const.CO.WX; x++) { ginfo_g = (tmpbmp[x, y] / 256) % 256; if (ginfo_g < 128) { //色の度合いによって粒子の出る割合が異なる。見た目をわかりやすくするためにg=128を0として色が濃いほどたくさん粒子がでる仕様 dtprtcomp.someofRYS.Inset(x, y, 128 - ginfo_g); //粒子湧出点を定義、あとで変更、追加もできる } } } }