子级在运行时会忽略对父级变换位置的更改。怎么修?

时间:2019-06-24 17:57:02

标签: c# unity3d position transform instance

我将球体实例化为GameObject的子代。我希望这些球体跟随GameObject的位置。

问题在于,这些球体顽固地停留在它们生成的位置,并且在运行时Inspector中任何“变换”位置更改时都拒绝更改其位置。

spheres = new GameObject[mesh.vertexCount]; //create gameobject array, size of mesh vertex count

for (int i = 0; i < mesh.vertexCount; i++)
{
    matrices1pos[i] = matrices1[i].position;
    spheres[i] = Instantiate(spherePrefab, matrices1[i].position, Quaternion.identity);
    spheres[i].transform.SetParent(GO2.transform);
}

我什至尝试添加代码:

spheres[i].transform.localPosition = Vector3.zero;

但这不会使球体也响应父级的位置更改。

顺便说一句,“球体”的生成位置是脚本在其上运行的GameObject(称为MeshChanger)的位置。在运行时更改MeshChanger转换的位置也无效。

edit:解决!请参阅下面的答案

1 个答案:

答案 0 :(得分:0)

我知道了。我需要使用本地位置。 =]

spheres[i].transform.SetParent(GO2.transform);
spheres[i].transform.localPosition = Vector3.Lerp(matrices1pos[i], matrices2[i].position, t);