Unity3D:一个接一个地生成随机对象(2D)

时间:2014-12-28 16:06:15

标签: c# unity3d

我想创建一个由随机生成的对象组成的地形。我创建了几个预制件并制作了一个脚本,其中包含阵列中的所有3个预制件,并随机生成它们。 我遇到的问题是(不同大小的)物体在1个单位距离内产生,因此基本上彼此相对,而不是彼此相继。 第二个问题是我不确定如何将产卵限制在一个合适的数字。我创建了一个脚本,一旦我通过它就会销毁这些对象,但是在代码中,目前它们产生的速度太快,太快(我知道代码不是最好的,我还在练习)。 我确实在寻找可能的解决方案或类似的问题,但没有找到任何可以帮助我的方法。 这是我脚本中的代码:

using UnityEngine;
using System.Collections;

public class SpawnScript : MonoBehaviour {

public GameObject[] obj;
public Vector3 pos = new Vector3(-8,-4,0);
public float size = 1.0f;
private Vector3 dir = Vector3.right;

void Start () {
    Spawn();
}

void Spawn() {
    for (int i = 0; i<30; i++) 
    {
        Instantiate (obj [Random.Range (0, obj.Length)], pos, Quaternion.identity);
        pos += dir * size;
    }
    Invoke ("Spawn", 2);
}
}

我希望我能得到任何建议,参考或帮助。

1 个答案:

答案 0 :(得分:0)

由于您将size定义为1.0f,因此它们以1个单位距离产生。取而代之的是物体的实际尺寸:

GameObject go = obj[Random.Range(0, obj.Length)];
Vector3 size = go.renderer.bounds.size;
pos += new Vector3(dir.x * size.x, dir.y * size.y, dir.z * size.z); 
Instantiate(go, pos, Quaternion.identity);

请参阅:Find Size of GameObject