/// <summary> /// 根据生物生态 创造方块 /// </summary> /// <param name="listBiome"></param> /// <param name="wPos"></param> /// <param name="width"></param> /// <param name="height"></param> /// <returns></returns> public BlockTypeEnum CreateBiomeBlockType(Chunk chunk, BiomeMapData biomeMapData, Vector3Int blockLocalPosition) { //当前方块位置高于随机生成的高度值时,当前方块类型为空 if (blockLocalPosition.y > biomeMapData.maxHeight) { if (blockLocalPosition.y <= biomeMapData.biome.biomeInfo.GetWaterPlaneHeight()) { return(BlockTypeEnum.Water); } else { return(BlockTypeEnum.None); } } int maxHeight = biomeMapData.maxHeight; Biome biome = biomeMapData.biome; //边缘处理 逐渐减缓到最低高度 if (blockLocalPosition.y > maxHeight &&// 在基础高度-4以上 biomeMapData.offsetDis <= 20) //在20范围以内 { maxHeight = Mathf.CeilToInt((biomeMapData.maxHeight - biome.biomeInfo.min_height) / 20f) * Mathf.CeilToInt(biomeMapData.offsetDis) + maxHeight; //当前方块位置高于随机生成的高度值时,当前方块类型为空 if (blockLocalPosition.y > maxHeight) { return(BlockTypeEnum.None); } } Vector3Int wPos = blockLocalPosition + chunk.chunkData.positionForWorld; BlockTypeEnum blockType = biome.GetBlockType(chunk, biome.biomeInfo, maxHeight, blockLocalPosition, wPos); //获取方块 return(blockType); }