【发布时间】:2021-05-31 18:19:00
【问题描述】:
我正在随机 X 秒实例化障碍物,它们从屏幕上掉下来。我一直在寻找一种方法来在落下的障碍物之间实例化块。
这是坠落的障碍物: GIF Example
IEnumerator ObstacleSpawner()
{
while (true)
{
obstacleSpawn = Random.Range(0.25f, 0.9f);
yield return new WaitForSeconds(obstacleSpawn);
GameObject newObstacle = Instantiate(obstacle, new Vector2(-1, 6.5f), Quaternion.identity);
}
}
这就是我要找的: Example
我正在寻找两件事。
-
如果坠落的物体在一定距离内,则创建方块。所以在我的代码中,如果障碍物生成时间在 0.25 - 0.6 秒之间,方块不会生成。之后,障碍物生成时间越大,生成的方块就越多。
-
让方块在障碍物之间均匀生成。如果实例化一个块,则它位于两个障碍物的中间。如果是两个、三个等等,它们会像上图所示的那样均匀分布。
我已尝试使用以下代码执行此操作,但显然,由于我是初学者,它每 X 秒实例化一次,老实说,我不知道从哪里开始执行此操作,因此不胜感激。
IEnumerator BlockSpawner()
{
while (true)
{
yield return new WaitForSeconds(Random.Range(0.25f, 0.9f));
if (obstacleSpawn >= 0.5f && obstacleSpawn < 0.7f)
{
GameObject newBlock = Instantiate(block, new Vector2(Random.Range(-1.65f, 1.65f), 6.5f), Quaternion.identity);
}
else if (obstacleSpawn >= 0.7f && obstacleSpawn < 0.8f)
{
for (int i = 0; i < 1; i++)
{
GameObject go = Instantiate(Instantiate(block));
go.transform.position = new Vector2(Random.Range(-1.65f, 1.65f), 6.5f);
}
}
else if (obstacleSpawn >= 0.8f && obstacleSpawn < 0.9f)
{
for (int i = 0; i < 2; i++)
{
GameObject go = Instantiate(Instantiate(block));
go.transform.position = new Vector2(Random.Range(-1.65f, 1.65f), 6.5f);
}
}
else if (obstacleSpawn >= 0.9f)
{
for (int i = 0; i < 3; i++)
{
GameObject go = Instantiate(Instantiate(block));
go.transform.position = new Vector2(Random.Range(-1.65f, 1.65f), 6.5f);
}
}
}
}
【问题讨论】:
标签: c# unity3d object instantiation