Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法正确设置地形树实例_C#_Unity3d_Terrain_Unity3d Terrain - Fatal编程技术网

C# 无法正确设置地形树实例

C# 无法正确设置地形树实例,c#,unity3d,terrain,unity3d-terrain,C#,Unity3d,Terrain,Unity3d Terrain,我目前正在尝试地形树,但我一直在操纵它们的位置。据我所知,下面的脚本应该可以工作,它还可以将位置转换为本地地形坐标,但什么也没有发生 private void SetTrees() { var Trees_On_Terrain = Terrain.activeTerrain.terrainData.treeInstances; for (int i = 0; i < Trees_On_Terrain.Length; i++) { Trees_On_Te

我目前正在尝试地形树,但我一直在操纵它们的位置。据我所知,下面的脚本应该可以工作,它还可以将位置转换为本地地形坐标,但什么也没有发生

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);
}
private void SetTrees()
{
var Trees_On_Terrain=Terrain.activeTerrain.terrainData.treeininstances;
对于(int i=0;i
它们被放置在(0,0,0)坐标附近的坐标系中


请帮忙

这里的问题是用
Terrain.activeTerrain.terrainData.heightmapResolution
划分x坐标和y坐标,这是不正确的

假设您的地形高度图分辨率为2049(2+1的幂),但您的地形尺寸为1250*500。你仍然要用2049除以x和y,但你应该用1250和500

您应该使用采样数据

Terrain.activeTerrain.terrainData.heightmapWidth
用于x坐标 y坐标的
Terrain.activeTerrain.terrainData.heightmapHeight

更正的代码段:

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);
}
private void SetTrees()
{
var Trees_On_Terrain=Terrain.activeTerrain.terrainData.treeininstances;
对于(int i=0;i
这里的问题是,您用
地形.activeTerrain.terrainData.heightmapResolution
划分x坐标和y坐标,这是不正确的

假设您的地形高度图分辨率为2049(2+1的幂),但您的地形尺寸为1250*500。你仍然要用2049除以x和y,但你应该用1250和500

您应该使用采样数据

Terrain.activeTerrain.terrainData.heightmapWidth
用于x坐标 y坐标的
Terrain.activeTerrain.terrainData.heightmapHeight

更正的代码段:

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);
}
private void SetTrees()
{
var Trees_On_Terrain=Terrain.activeTerrain.terrainData.treeininstances;
对于(int i=0;i
那么10f/Terrain.activeTerrain.terrainData.heightmapResolution的值是多少?我敢打赌它离我们很近zero@Bizhnan是的,离它很近,但没有那么近。那么10f/Terrain.activeTerrain.terrainData.heightmapResolution的值是多少?我敢打赌它离我们很近zero@Bizhnan是的,很近,但没那么近谢谢。。。我甚至不知道为什么我只用了我能帮上忙的解决方法:)谢谢。。。我甚至不知道为什么我只使用了我能帮上忙的解决方案:)