//指定座標のcellを生成してworldに追加 private static void buildCell(int aX, int aY, int aZ) { int tZ = mWorld.mSize.z - 1 - aZ; MapCell tCell = new MapCell(); MapTile tTile; //平面階層 int tChipNum = mData.mStratums[aY].mFeild[tZ][aX]; MapFileData.Tile tTileData = mData.mChip.get(tChipNum); if (tTileData != null) { tTile = createTile(tTileData); //階層に追加 tTile.transform.SetParent(mWorld.mStratums[aY].mTiles.transform, false); tTile.changeLayer(MyMap.mStratumLayerNum[aY]); tCell.mTile = tTile; //座標設定 tTile.mMapPosition = new MapPosition(new Vector3(aX, aY, aZ)); //encount if (tTileData.mEncountKey != "") { tCell.mEncountKey = tTileData.mEncountKey; tCell.mEncountFrequency = tTileData.mEncountFrequency; } } //+0.5階層 tChipNum = mData.mStratums[aY].mHalfHeightFeild[tZ][aX]; tTileData = mData.mChip.get(tChipNum); if (tTileData != null) { tTile = createTile(tTileData); //階層に追加 tTile.transform.SetParent(mWorld.mStratums[aY].mHalfHeightTiles.transform, false); tTile.changeLayer(MyMap.mStratumLayerNum[aY]); tCell.mHalfHeightTile = tTile; //座標設定 tTile.mMapPosition = new MapPosition(new Vector3(aX, aY, aZ)); //encount if (tTileData.mEncountKey != "") { tCell.mEncountKey = tTileData.mEncountKey; tCell.mEncountFrequency = tTileData.mEncountFrequency; } } mWorld.mCells[aX, aY, aZ] = tCell; //2D描画でのY方向サイズ更新 if (tCell.mTile != null || tCell.mHalfHeightTile != null) { if (mWorld.mOrthographySizeY < aY + aZ) { mWorld.mOrthographySizeY = aY + aZ; } } }
/// <summary> /// 1マスを生成 /// </summary> /// <returns>マス</returns> /// <param name="aCellData">マスのデータ</param> public static MapTile createTile(MapFileData.Tile aTileData) { string tPrefabPath = aTileData.mTile; //ロード MapTile tTile = MyBehaviour.createObjectFromResources <MapTile>(MyMap.mMapResourcesDirectory + "/tile/" + tPrefabPath); //属性にcellを割り当て foreach (TilePhysicsAttribute tAttribute in tTile.GetComponentsInChildren <TilePhysicsAttribute>()) { tAttribute.mBehaviour = tTile; } //エンカウント return(tTile); }