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是的,很近,但没那么近谢谢。。。我甚至不知道为什么我只用了我能帮上忙的解决方法:)谢谢。。。我甚至不知道为什么我只使用了我能帮上忙的解决方案:)