| name | ra3-map-csharp |
| description | 编写c#程序, 创建/编辑ra3地图文件. |
RA3 Map CSharp
RA3 地图中的术语与概念
地图的尺寸与坐标
地图有两种坐标系
网格坐标
网格坐标为大于0的整数
将地图分割为多个正方形区域, 原点为左下角的区域, 水平向右的方向为x轴, 垂直向上的方向为y轴
网格坐标用于描述地图尺寸, 地形高度, 地图纹理信息
地图宽度 = 可游玩区域宽度 + 地图边界宽度 * 2
地图高度 = 可游玩区域高度 + 地图边界宽度 * 2
实际坐标
实际坐标为浮点数
精准地描述地图中的位置, 网格坐标中的一个单位长度为实际坐标中的10个单位长度
主要用于表示物体或路径点的位置
cell_x = ceil((real_x - boder_width * 10) / 10)
cell_y = ceil((real_y - board_width * 10) / 10)
编程指导
引入依赖
using Dreamness.Ra3.Map.Facade.Core;
using Dreamness.Ra3.Map.Facade.Util;
新建/打开/保存 地图文件
var ra3Map1 = Ra3MapFacade.NewMap(100, 200, 10);
var ra3Map2 = Ra3MapFacade.Open(Ra3PathUtil.RA3MapFolder, "map_name");
ra3Map1.SaveAs(Ra3PathUtil.RA3MapFolder, "target_map_name");
ra3Map2.Save();
获取地图信息
int mapHeight = ra3Map.MapHeight;
int mapWidth = ra3Map.MapWidth;
var mapBorderWidth = ra3Map.MapBorderWidth;
var mapPlayableHeight = ra3Map.MapPlayableHeight;
var mapPlayableWidth = ra3Map.MapPlayableWidth;
高度数据
float height = ra3Map.GetTerrainHeight(10, 20);
ra3Map.SetTerrainHeight(50, 600, 300.5f);
ra3Map.UpdatePassabilityMap();
纹理
string textureName = ra3Map.GetTileTexture(300, 550);
ra3Map.SetTileTexture(10, 20, "BB_Gravel01");
using Dreamness.Ra3.Map.Facade.enums;
ra3Map.SetTileTexture(10, 20, TextureEnum.BB_Gravel01.ToString());
ra3Map.AutoDetectBlendsEntireMap();