无法更改实例化GameObject的transform.position

时间:2018-07-11 18:17:48

标签: c# unity3d

我有一个随机世界,其中有一些随机实例化的树。

我使用以下代码实例化它们:

GameObject go = Instantiate(treePrefab);
go.name = "Tree";
go.tag = "Wood";
go.layer = 9;
go.transform.position = new Vector3(y + UnityEngine.Random.Range(-0.5f, 0.5f), heightPos, x + UnityEngine.Random.Range(-0.5f, 0.5f));
go.transform.Rotate(0, UnityEngine.Random.Range(0, 360), 0);

xy是for循环的一部分,该循环遍历我世界的所有位置(如网格)。

heightPos是特定点(x / y)上当前的地形高度。

我的问题是树上的预制物体的位置为0、0、0。

每个实例化的树也都设置为0、0、0。

我使用完全相同的代码实例化岩石,仙人掌,羽毛,汽车和许多其他东西,并且效果很好。

但是它总是在树上失败。

我仔细阅读了代码,除预制件(当然)外,其他对象没有任何区别。

所以我认为它必须与预制件的设置有关。

但是我的预制件没有动画器,它不是静态的或类似的东西。

这是我的树型预制件在检查器中的外观:

enter image description here

这是场景视图中的样子:

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以创建另一个游戏对象并将该实例作为该游戏对象的子对象,因此即使该实例始终处于(0,0,0),您也可以始终更改父对象的位置。