地形

cartoonboy 的头像

关于Terrain.activeTerrain的提问??

我把var terrainHeights = Terrain.activeTerrain.terrainData.GetHeights( 0, 0, xPolyDivision, zPolyDivision);

改为var terrainHeights = GetComponent(Terrain).terrainData.GetHeights( 0, 0, xPolyDivision, zPolyDivision);

这句报错:terrainHeights[i,j] = hit.point.y/Terrain.activeTerrain.terrainData.size.y;

不明白是什么原因。为什么用activeTerrain就可以呢?? 当我在场景中创建一个Terrain时,还不都是指向同一个Terrain吗??请高手指教!!

u8 的头像

unity3d中地形的制作

Unity3D手册中介绍了两种地形制作方法:

  一、在SceneView中使用height tools直接绘制

  二、使用外部工具制作的heightmaps

  直接绘制地形很简单,不过只适合小面积地图的制作,对于真实游戏项目来说,这样拉地形实在太复杂,一般我们都会使用外部工具,比如PS,比如max来制作高度图,然后导出为一张灰度图,在引擎中将其转换为地形。

  Unity3D也支持了这种做法,即导入HeightMap的方式,不过对HeightMap的格式有一个限定,必须是16bit的RAW格式灰度图,但是除此之外手册中再没有更多的描述。

  没关系,Unity3D提供了将地形导出为HeightMap的方法,我们可以做一张小地图将其导出来,看一看就知道了。

  如下图所示,将地形长宽高都设定为2个单位,地形精度设定为33,这个数值是能够设置的最小值了。这样就表示在一个单位内会有17个高度值,即16条边。然后把这个地形导出为16bit Raw格式文件。

heightmap_resolusion_1.jpg