首页 > 解决方案 > 如何将子对象移向另一个坐标?

问题描述

当我在我的播放器下创建子对象(多维数据集)时(在他“跳跃”为新对象腾出空间之后),第一个孩子正常连接,但其他多维数据集是在第一个孩子的位置创建的(类似于多维数据集中的多维数据集)。如何创建子对象,以便它们在 Y 轴上一个在另一个之上创建?

标签: c#unity3d

解决方案


使用Instantiate, 设置父级并设置相对于父级位置的位置。

[SerializeField] int objectsToCreate = 3;
[SerializeField] GameObject objToClone;
[SerializeField] Transform rootObjInScene;
[SerializeField] float distance = 20f;

void Awake()
{
    Transform curParent = rootObjInScene;
    Vector posOffset = Vector3.up * distance;

    for (int i = 0; i < objectsToCreate; i++)
    {
        Vector3 newPos = curParent.position + posOffset;
        GameObject newObj = Instantiate(objToClone, newPos, Quaternion.identity, 
                curParent);

        curParent = newObj.transform;
    }
}

或者,一次创建一个:

[SerializeField] int objectsToCreate = 3;
[SerializeField] GameObject objToClone;
[SerializeField] Transform rootObjInScene;
[SerializeField] float distance = 20f;

Transform curParent;
Vector3 posOffset;

void Awake()
{
    curParent = rootObjInScene;
    posOffset = Vector3.up * distance;
}

public void CreateAnother()
{
    Vector3 newPos = curParent.position + posOffset;
    GameObject newObj = Instantiate(objToClone, newPos, Quaternion.identity, 
            curParent);

    curParent = newObj.transform;
}

推荐阅读