创建水域
创建水域也是在创建地图的基础上加上一个语句,然后把地形语句删掉。
语句是:
[( )] 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下面就行,或者地图最后一句也行。
本次教程结束。