创建水域




创建水域也是在创建地图的基础上加上一个语句,然后把地形语句删掉。
语句是: [( )] rmSetAreaWaterType(int areaID, string waterName): Sets the water type for an area.
[( )] rmSetAreaWaterType(int areaID, string waterName): 给地形设定水域类型,然后这个地形就变成水域了,string waterName参考下表。


River
Amazon River Andes River Deccan Plateau River Pampas River
Yellow River Yukon River
Lake
Amsterdam Bayou Berlin Borneo Water
China_HC Constantinople Great Lakes Great Lakes Ice
Great Plains Pond India_HC Iroquois_HC Japan_HC
Lisbon London New England Lake Northwest Territory Water
Paris Saguenay Lake Seville Texas Pond
Yellow River Flooded
Coast
Amazon River Basin Araucania Central Coast Araucania North Coast Araucania Southern Coast
Atlantic Coast Bayou SPC Borneo Coast California Coast
Caribbean Coast Ceylon Coast Cinematic Ship Ocean Coastal Japan
Hudson Bay Hudson Bay New England Coast Yucatan Coast





例如这是一个地形:
  int TestID=rmCreateArea("Test ID Area");
  rmSetAreaSize(TestID, rmAreaTilesToFraction(500), rmAreaTilesToFraction(500));
  rmSetAreaWarnFailure(TestID, true);
  rmSetAreaSmoothDistance(TestID, 0);
  rmSetAreaCoherence(TestID, 0.0);
  rmSetAreaMix(TestID, "himalayas_a");
  rmSetAreaBaseHeight(TestID, 4.0);
  rmSetAreaElevationOctaves(TestID, 3);
  rmSetAreaObeyWorldCircleConstraint(TestID, false);
  rmSetAreaLocation(TestID, 0.5, 0.5);
  rmBuildArea(TestID);


将上述语句改成水域如下:
  int TestID=rmCreateArea("Test ID Area");
  rmSetAreaSize(TestID, rmAreaTilesToFraction(500), rmAreaTilesToFraction(500));
  rmSetAreaWaterType(TestID, "Cinematic Ship Ocean");
  rmSetAreaWarnFailure(TestID, true);
  rmSetAreaSmoothDistance(TestID, 0);
  rmSetAreaCoherence(TestID, 0.0);
  //rmSetAreaMix(TestID, "himalayas_a");将设定地形类型语句删除,就算是保留也不会再起任何作用了。
  rmSetAreaBaseHeight(TestID, 4.0);//地形高度可加,也可以不加,看你自己想怎样设定。
  rmSetAreaElevationOctaves(TestID, 3);
  rmSetAreaObeyWorldCircleConstraint(TestID, false);
  rmSetAreaLocation(TestID, 0.5, 0.5);
  rmBuildArea(TestID);



int TestID=rmCreateArea("Test ID Area"); rmSetAreaSize(TestID, rmAreaTilesToFraction(500), rmAreaTilesToFraction(500)); rmSetAreaWaterType(TestID, "Cinematic Ship Ocean"); rmSetAreaWarnFailure(TestID, true); rmSetAreaSmoothDistance(TestID, 0); rmSetAreaCoherence(TestID, 0.0); //rmSetAreaMix(TestID, "himalayas_a");将设定地形类型语句删除,就算是保留也不会再起任何作用了。 rmSetAreaBaseHeight(TestID, 14.0);//地形高度14 rmSetAreaElevationOctaves(TestID, 3); rmSetAreaObeyWorldCircleConstraint(TestID, false); rmSetAreaLocation(TestID, 0.5, 0.5); rmBuildArea(TestID);

创建水域注意事项:创建水域应避开所有已有单位,包括已有的水域单位,否则会让原有的单位消失。
你有两种选择:	1.优先创建水域,在地图的第一个单位出现前就要创建,另外其他单位(城镇中心、群组等单位)应该避开水域,不然可能会导致无法放置。
2.创建水域时使用放置规则,避开所有单位,注:这种情况不能用rmSetAreaLocation设定定位点,不然可能会导致无法生成。
方法在前面创建森林的时候已经教过你了,这里不再列出,两个教程的相似度是不是高达80%?
另外水域不像河流那样能控制轮廓,所以你想固定轮廓还是用河流吧。
最后补充可以使用 rmSetOceanReveal(true); 来设定开局已探索水域,添加在rmBuildArea下面就行,或者地图最后一句也行。




本次教程结束。