如何使用terraindata.GetHeight(x,y)

时间:2018-07-03 02:56:05

标签: c# unity3d terrain

大家好,我正在尝试制作一个脚本,该脚本将使用TerrainData.GetHeight()函数指定的x,y和z位置在地形上生成植物。 X和Z坐标可以很好地工作,但对于y位置,即使地形高度大于默认/平坦高度,也只能提供地形开始的默认/平坦高度。 因此,当在平坦的地形上产卵植物时,基本上一切正常,但是任何山丘都不会改变它们产卵的高度。

enter image description here

没有植物的地形部分上方的

图片确实有它们。他们和其他人处于同一等级。

请参见下面的代码。在此先感谢您的帮助。

(:

    private void spawnPlants() {
    for (int x = 0; x < amountOfPlants; x++) {
        float randomX = Random.Range(transform.position.x, transform.position.x + GetComponent<Terrain>().terrainData.size.x);
        float randomZ = Random.Range(transform.position.z, transform.position.z + GetComponent<Terrain>().terrainData.size.z);

        GameObject newPlant = Instantiate(plants[Random.Range(0, plants.Length)], new Vector3(randomX, GetComponent<Terrain>().terrainData.GetHeight((int)randomX, (int)randomZ), randomZ), Quaternion.identity);
        newPlant.transform.parent = parent.transform;
    }
}

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用Terrain.SampleHeight()