对于十六进制益智游戏,这些物体会彼此叠放

时间:2019-03-30 15:28:56

标签: c# unity3d

我正在做一个十六进制益智游戏。但是问题是生成的对象是重叠的,因为我是随机的,我想删除重叠的对象并对它们进行排序,如图所示,但我无法我正在使用统一游戏引擎。在这方面您可以提供帮助吗?

void Update()
{
        StartCoroutine(Create());

}



IEnumerator Create()
{
    yield return new WaitForSeconds(start_standby);
    while (true)
    {

        for (int i = 0; i < 10; i++)
        {
            if (randHexagon <= 5)
            {
                Vector3 vec = new Vector3(Random.Range(-randomPos.x, randomPos.x), Random.Range(-randomPos.y, randomPos.y), 0);
                Instantiate(spawnObject[randHexagon], vec, Quaternion.identity);

            }


                yield return new WaitForSeconds(create_wait);


        }

        yield return new WaitForSeconds(loop_wait);
        if (finishGame)
        {
            returnStart = true;
            break;
        }

    }
}

}

结果是,应该在屏幕上出现由连续和随机颜色组成的六边形,但是形成的六边形排成一行而不是直线。

1 个答案:

答案 0 :(得分:1)

如果您不想在每一帧都运行此协程,请先将协程调用放置在一个像“开始”中那样被调用一次的方法中。

如果要将六边形放置在基于Grid的游戏中,最好的方法是使用数据结构存储六边形,并像生成数组一样继续生成它们,这样可以防止重叠

如果要随机生成六边形,可以使用Physics.Overlap方法轻松停止重叠。Overlap方法基本上检查是否有重叠的东西,然后继续操作。