Экземпляры дерева ландшафта не могут быть установлены правильно
В настоящее время я экспериментирую с деревьями ландшафта, но я застрял в изменении их положения. Следующий скрипт, насколько я знаю, должен работать, он также преобразует позицию в координаты местности, но ничего не происходит.
private void SetTrees()
{
var Trees_On_Terrain = Terrain.activeTerrain.terrainData.treeInstances;
for (int i = 0; i < Trees_On_Terrain.Length; i++)
{
Trees_On_Terrain[i].position = new Vector3(10f /
Terrain.activeTerrain.terrainData.heightmapResolution, 0f, 10f /
Terrain.activeTerrain.terrainData.heightmapResolution);
}
Terrain.activeTerrain.terrainData.SetTreeInstances(Trees_On_Terrain, true);
}
Они помещаются в координату, близкую к (0,0,0).
Пожалуйста помоги!
1 ответ
Проблема здесь в том, что вы делите свои координаты x и y на Terrain.activeTerrain.terrainData.heightmapResolution
что неверно.
Представьте, что разрешение карты высот вашего ландшафта составляет 2049(степень двойки + 1), но размер вашего ландшафта составляет 1250 * 500. Вы все равно разделите x и y на 2049, но лучше на 1250 и 500.
Вы должны использовать выборочные данные
Terrain.activeTerrain.terrainData.heightmapWidth
для координаты xTerrain.activeTerrain.terrainData.heightmapHeight
для координаты y.
Исправленный фрагмент кода:
private void SetTrees()
{
var Trees_On_Terrain = Terrain.activeTerrain.terrainData.treeInstances;
for (int i = 0; i < Trees_On_Terrain.Length; i++)
{
Trees_On_Terrain[i].position = new Vector3(10f / Terrain.activeTerrain.terrainData.heightmapWidth, 0f, 10f / Terrain.activeTerrain.terrainData.heightmapHeight);
}
Terrain.activeTerrain.terrainData.SetTreeInstances(Trees_On_Terrain, true);
}