物体不会在正确的位置产生

时间:2019-10-28 13:44:59

标签: c# unity3d

我正在尝试以随机模式生成多维数据集。

首先,将多维数据集生成到世界中。然后生成一个随机数。此数字决定在哪个位置生成下一个多维数据集。我们称它为cube1生成多维数据集1之后,多维数据集2应该使用多维数据集1的位置进行生成,但仍使用原始多维数据集的位置。

我不明白为什么。

我已经尝试过使用Debug.Log来查看不同的位置,但是无论我如何尝试,它似乎都无法正常工作。

public class GenerateDungeon: MonoBehaviour {

    public GameObject[] cells;
    public int number = 0, i = 0;

    public void Start()
    {
        Instantiate(cells[i], new Vector3(0, 0, 0), Quaternion.identity);

        while(i < 2)
        {
            number = Random.Range(1, 5);

            i++;

            if (number == 1)
            {
                Instantiate(cells[i], cells[i - 1].transform.position + new Vector3(0, 4, 0), Quaternion.identity);
            }
            else if (number == 2)
            {
                Instantiate(cells[i], cells[i - 1].transform.position + new Vector3(4, 0, 0), Quaternion.identity);
            }
            else if (number == 3)
            {
                Instantiate(cells[i], cells[i - 1].transform.position + new Vector3(0, -4, 0), Quaternion.identity);
            }
            else if (number == 4)
            {
                Instantiate(cells[i], cells[i - 1].transform.position + new Vector3(-4, 0, 0), Quaternion.identity);
            }

        }
    }
}

我没有收到任何错误消息,但是它没有按我预期的方式工作。

1 个答案:

答案 0 :(得分:0)

调用Instantiate时,第一个参数是要复制的对象,而不是复制到的目标引用。

因此,您可能想要的是存储对源对象的引用:

public GameObject CubeToCopy;

然后在实例化时,要像这样将每个副本复制到数组中:

cells[i] = Instantiate(CubeToCopy, [...]);

这样,“单元”数组将存储您实际实例化的对象,并且位置逻辑应开始正常工作。