我正在做一个十六进制益智游戏。但是问题是生成的对象是重叠的,因为我是随机的,我想删除重叠的对象并对它们进行排序,如图所示,但我无法我正在使用统一游戏引擎。在这方面您可以提供帮助吗?
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;
}
}
}
}
结果是,应该在屏幕上出现由连续和随机颜色组成的六边形,但是形成的六边形排成一行而不是直线。
答案 0 :(得分:1)
如果您不想在每一帧都运行此协程,请先将协程调用放置在一个像“开始”中那样被调用一次的方法中。
如果要将六边形放置在基于Grid的游戏中,最好的方法是使用数据结构存储六边形,并像生成数组一样继续生成它们,这样可以防止重叠>
如果要随机生成六边形,可以使用Physics.Overlap方法轻松停止重叠。Overlap方法基本上检查是否有重叠的东西,然后继续操作。