当前位置: 首页>>代码示例>>C#>>正文


C# Terrain.WorldToTerrainMapCoordinates方法代码示例

本文整理汇总了C#中UnityEngine.Terrain.WorldToTerrainMapCoordinates方法的典型用法代码示例。如果您正苦于以下问题:C# Terrain.WorldToTerrainMapCoordinates方法的具体用法?C# Terrain.WorldToTerrainMapCoordinates怎么用?C# Terrain.WorldToTerrainMapCoordinates使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在UnityEngine.Terrain的用法示例。


在下文中一共展示了Terrain.WorldToTerrainMapCoordinates方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: AddLake

        /// <summary>
        /// Add a lake to the terrain
        /// </summary>
        private void AddLake(Terrain terrain, int tileX, int tileZ, int lakeSize = 150)
        {
            var data = terrain.terrainData;
            //Access height map
            var width = data.heightmapWidth;
            var height = data.heightmapHeight;
            var heightmap = data.GetHeights(0, 0, width, height);

            //random X and Z coordinate and sample height
            Vector3 lakeCenter = terrain.RandomPositionOnTerrain(lakeSize);

            var lakeRadius = lakeSize / 2;
            var coords = terrain.WorldToTerrainMapCoordinates(lakeCenter);
            int xCenter = (int)coords.x;
            int zCenter = (int)coords.z;

            var minDepth = 0.09f;
            for (int x = xCenter - lakeRadius; x < xCenter + lakeRadius; x++)
            {
                for (int z = zCenter - lakeRadius; z < zCenter + lakeRadius; z++)
                {
                    //deeper the closer to the center
                    float centerX = 1 - Math.Abs((float)(xCenter - x) / lakeRadius);
                    float centerZ = 1 - Math.Abs((float)(zCenter - z) / lakeRadius);

                    float avg = (centerX * centerZ) / 2;

                    var depth = minDepth * avg;

                    Mathf.Clamp(depth, minDepth - 0.01f, minDepth + 0.01f);

                    heightmap[z, x] -= depth;
                }
            }
            //Update height map
            data.SetHeights(0, 0, heightmap);

            lakeCenter.y -= 4.5f;

            var waterInstance = (GameObject)GameObject.Instantiate(_terrainSettings.WaterPrefab, lakeCenter, Quaternion.identity);
            waterInstance.SetParent(terrain.gameObject);
        }
开发者ID:TobieD,项目名称:City-Generator,代码行数:45,代码来源:TerrainTileGenerator.cs


注:本文中的UnityEngine.Terrain.WorldToTerrainMapCoordinates方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。