语句是: [( )] rmSetAreaCliffType(int areaID, string cliffName): Sets the cliff type for an area. [( )] rmSetAreaCliffType(int areaID, string cliffName): 给地形设定悬崖类型,然后这个地形就变成悬崖了,cliffName参考下表。
Amazon | Andes | Andeswall | Araucania Central | ||||
araucania central coast | araucania central coast2 | Araucania North | Araucania North Coast | ||||
Araucania North Coast2 | Araucania South | Araucania Southern Coast | Bayou | ||||
California | californiacoast | californiacoast2 | Caribbean | ||||
Carolina | Carolina Coast | Carolina Inland | Cave | ||||
Ceylon | Coastal Japan | Deccan Plateau | Deccan Plateau River | ||||
Great Plains | Himalayas | New England | New England Inland | ||||
New England Inland Grass | New England snow | New England_texgrass | Orinoco | ||||
Painteddesert | Patagonia | Patagonia | Rocky Mountain Edge | ||||
Rocky Mountain2 | Sonora | SPC Caribbean | SPC Mountain Pass | ||||
SPC Rocky cliffs | Texas | Texas Grass | Yellow River |
例如这是一个地形: 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)); rmSetAreaCliffType(TestID, "SPC Caribbean"); 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)); rmSetAreaCliffType(TestID, "SPC Caribbean"); rmSetAreaWarnFailure(TestID, true); rmSetAreaSmoothDistance(TestID, 0); rmSetAreaCoherence(TestID, 0.0); //rmSetAreaMix(TestID, "himalayas_a");将设定地形类型语句删除,就算是保留也不会再起任何作用了。 rmSetAreaBaseHeight(TestID, 10.0);//地形高度10 rmSetAreaElevationOctaves(TestID, 3); rmSetAreaObeyWorldCircleConstraint(TestID, false); rmSetAreaLocation(TestID, 0.5, 0.5); rmBuildArea(TestID);
与前面几个教程一样,悬崖可以删掉rmSetAreaLocation定位,然后用放置限制随机放置,这里不再列出。 事实上悬崖我也搞不太懂,悬崖还有几个语句例如rmSetAreaCliffHeight: [( )] rmSetAreaCliffHeight(int areaID, float val, float variance, float ramp): Set an area's cliff height. rmSetAreaCliffHeight是一个可以设定悬崖高度的语句,以下是rmSetAreaCliffHeight的测试结果 int TestID=rmCreateArea("Test ID Area"); rmSetAreaSize(TestID, rmAreaTilesToFraction(500), rmAreaTilesToFraction(500)); rmSetAreaWarnFailure(TestID, true); rmSetAreaSmoothDistance(TestID, 0); rmSetAreaCoherence(TestID, 0.8); //rmSetAreaBaseHeight(TestID, 4.0); rmSetAreaCliffType(TestID, "SPC Caribbean"); rmSetAreaCliffHeight(TestID, rmRandInt(6, 8), 100.0, 1.0); rmSetAreaElevationOctaves(TestID, 3); rmSetAreaObeyWorldCircleConstraint(TestID, false); rmSetAreaLocation(TestID, 0.5, 0.5); rmSetAreaHeightBlend(TestID, 100); rmBuildArea(TestID);
variance:变化幅度; ramp :斜坡; 总合以上测试结果大概就是 rmSetAreaCliffHeight(int areaID, float val悬崖高度, float variance浮动高度(悬崖最高值), float ramp斜坡,一般为1.0,数值越大斜坡越直,<1的话已经不能算悬崖了,0.0直接变成平地) 也只能这样解释了,我也被搞懵了。 不管这个语句了,另一个语句: rmSetAreaCliffEdge(int areaID, int count, float size, float variance, float spacing, int mapEdge): Set cliff edge parameters for an area. ---------------------------------------------------- int TestID=rmCreateArea("Test ID Area"); rmSetAreaSize(TestID, rmAreaTilesToFraction(500), rmAreaTilesToFraction(500)); rmSetAreaWarnFailure(TestID, true); rmSetAreaSmoothDistance(TestID, 0); rmSetAreaCoherence(TestID, 0.8); rmSetAreaCliffType(TestID, "SPC Caribbean"); rmSetAreaCliffHeight(TestID, rmRandInt(6, 8), 1.0, 1.0); rmSetAreaCliffEdge(TestID, 3, rmAreaTilesToFraction(2000), 1, 1, 0); rmSetAreaElevationOctaves(TestID, 3); rmSetAreaObeyWorldCircleConstraint(TestID, false); rmSetAreaLocation(TestID, 0.5, 0.5); rmSetAreaHeightBlend(TestID, 100); rmBuildArea(TestID);
int TestID=rmCreateArea("Test ID Area"); rmSetAreaSize(TestID, rmAreaTilesToFraction(500), rmAreaTilesToFraction(500)); rmSetAreaWarnFailure(TestID, true); rmSetAreaSmoothDistance(TestID, 0); rmSetAreaCoherence(TestID, 0.8); rmSetAreaCliffType(TestID, "SPC Caribbean"); rmSetAreaCliffHeight(TestID, rmRandInt(6, 8), 1.0, 1.0); rmSetAreaCliffEdge(TestID, 3, rmAreaTilesToFraction(2000), 0, 10, 0); rmSetAreaElevationOctaves(TestID, 3); rmSetAreaObeyWorldCircleConstraint(TestID, false); rmSetAreaLocation(TestID, 0.5, 0.5); rmSetAreaHeightBlend(TestID, 100); rmBuildArea(TestID);
int TestID=rmCreateArea("Test ID Area"); rmSetAreaSize(TestID, rmAreaTilesToFraction(500), rmAreaTilesToFraction(500)); rmSetAreaWarnFailure(TestID, true); rmSetAreaSmoothDistance(TestID, 0); rmSetAreaCoherence(TestID, 0.8); rmSetAreaCliffType(TestID, "SPC Caribbean"); rmSetAreaCliffHeight(TestID, rmRandInt(6, 8), 1.0, 1.0); rmSetAreaCliffEdge(TestID, 1, 1.0, 0.1, 1.0, 0); rmSetAreaElevationOctaves(TestID, 3); rmSetAreaObeyWorldCircleConstraint(TestID, false); rmSetAreaLocation(TestID, 0.5, 0.5); rmSetAreaHeightBlend(TestID, 100); rmBuildArea(TestID);
rmSetAreaCliffEdge大概是在边缘生成额外悬崖 rmSetAreaCliffEdge(int areaID, int count数量, float size大小, float variance高度浮动, float spacing???, int mapEdge???) --------------------------------------------------------------------------- 创建悬崖还可以使用rmAddAreaInfluenceSegment(int areaID, float xFraction1, float zFraction1, float xFraction2, float zFraction2): Adds an area influence segment. 生成根据两个坐标连成的直线生成额外悬崖。 rmAddAreaInfluenceSegment(TerrainID, 1.0, 1.0, 0.0, 0.0);添加后,如果定位点在rmAddAreaInfluenceSegment的直线范围里面,会额外生成一条直线地形。例如rmSetAreaLocation为0.5,0.5;而rmAddAreaInfluenceSegment第一个点为1.0,1.0,第二个点为0.0,0.0,那么1.0,1.0到0.0,0.0之间会生成额外地形,大小依然为rmSetAreaSize定义的大小。(似乎还有什么影响着悬崖大小......) int TestID=rmCreateArea("Test ID Area"); rmSetAreaSize(TestID, rmAreaTilesToFraction(500), rmAreaTilesToFraction(500)); rmSetAreaWarnFailure(TestID, true); rmSetAreaSmoothDistance(TestID, 0); rmSetAreaCoherence(TestID, 0.8); rmSetAreaCliffType(TestID, "SPC Caribbean"); rmSetAreaCliffHeight(TestID, rmRandInt(6, 8), 1.0, 1.0); rmAddAreaInfluenceSegment(TestID, 0.0, 0.1, 0.6, 0.6); rmSetAreaElevationOctaves(TestID, 3); rmSetAreaObeyWorldCircleConstraint(TestID, false); rmSetAreaLocation(TestID, 0.5, 0.5); rmSetAreaHeightBlend(TestID, 100); rmBuildArea(TestID);
再把rmSetAreaCliffEdge加上去 int TestID=rmCreateArea("Test ID Area"); rmSetAreaSize(TestID, 0.1, 0.1); rmSetAreaWarnFailure(TestID, true); rmSetAreaSmoothDistance(TestID, 0); rmSetAreaCoherence(TestID, 0.8); rmSetAreaCliffType(TestID, "SPC Caribbean"); rmSetAreaCliffHeight(TestID, rmRandInt(6, 8), 1.0, 1.0); rmSetAreaCliffEdge(TestID, 1, 10, 1, 1, 0); rmAddAreaInfluenceSegment(TestID, 0.0, 0.0, 1.0, 1.0); rmSetAreaElevationOctaves(TestID, 3); rmSetAreaObeyWorldCircleConstraint(TestID, false); rmSetAreaLocation(TestID, 0.5, 0.5); rmSetAreaHeightBlend(TestID, 100); rmBuildArea(TestID);
可以添加多个rmAddAreaInfluenceSegment int TestID=rmCreateArea("Test ID Area"); rmSetAreaSize(TestID, 0.1, 0.1); rmSetAreaWarnFailure(TestID, true); rmSetAreaSmoothDistance(TestID, 0); rmSetAreaCoherence(TestID, 0.8); rmSetAreaCliffType(TestID, "SPC Caribbean"); rmSetAreaCliffHeight(TestID, rmRandInt(6, 8), 1.0, 1.0); rmSetAreaCliffEdge(TestID, 1, 10, 1, 1, 0); rmAddAreaInfluenceSegment(TestID, 0.0, 0.0, 1.0, 1.0); rmAddAreaInfluenceSegment(TestID, 0.5, 1.0, 0.5, 0.0); rmAddAreaInfluenceSegment(TestID, 0.0, 1.0, 1.0, 0.0); rmAddAreaInfluenceSegment(TestID, 0.0, 0.5, 1.0, 0.5); rmSetAreaElevationOctaves(TestID, 3); rmSetAreaObeyWorldCircleConstraint(TestID, false); rmSetAreaLocation(TestID, 0.5, 0.5); rmSetAreaHeightBlend(TestID, 100); rmBuildArea(TestID);
--------------------------------------------------------------------------- 补充:峡谷地形 int TestID=rmCreateArea("Test ID Area"); rmSetAreaSize(TestID, 0.1, 0.1); rmSetAreaWarnFailure(TestID, true); rmSetAreaSmoothDistance(TestID, 0); rmSetAreaCoherence(TestID, 0.8); rmSetAreaCliffType(TestID, "SPC Caribbean"); rmSetAreaCliffHeight(TestID, -10, 1.0, 1.0); rmSetAreaCliffEdge(TestID, 1, 10, 1, 1, 0); rmSetAreaElevationOctaves(TestID, 3); rmSetAreaObeyWorldCircleConstraint(TestID, false); rmSetAreaLocation(TestID, 0.5, 0.5); rmSetAreaHeightBlend(TestID, 100); rmBuildArea(TestID);
删除rmSetAreaCliffEdge后
---------------------------------------------------------------------------