无限和随机环境产生

Infinite & Random environment spawn

我正在努力实现一个无穷无尽的 运行ner,它可以在您 运行 的过程中将平铺(模块化)模型随机实例化到另一个模型上。

这是附加到模型的代码,当它用 "Player" 触发时,它会从数组中随机实例化一个新模型。但是,我希望它在之前模型的正好 -90 倍处生成,以便它们平铺。目前,它在 -90, 0 , 0 实例化到世界 space。

function OnTriggerEnter (hit : Collider) {
    //obstacles spawn
    if(hit.gameObject.tag == "Player") {
        var toSpawn : GameObject = obstacles[Random.Range(0,obstacles.Length)];
        var spawnPosition = new Vector3 (-90,0,0);
        var Spawn = Instantiate (toSpawn, spawnPosition), Quaternion.identity;
    }
}

然后您需要缓存旧图块或以​​某种方式找到它

GameObject lastSpawn;

function OnTriggerEnter (hit : Collider)
{
    //obstacles spawn
    if(hit.gameObject.tag == "Player")
    {
        var toSpawn : GameObject = obstacles[Random.Range(0,obstacles.Length)];
        var offset = new Vector3 (-90,0,0);
        var spawn = Instantiate (toSpawn, lastSpawn.transform.position + offset), Quaternion.identity) as GameObject;
        lastTile = spawn;
    }
}

现在这个将允许可变图块大小(未测试):

GameObject lastSpawn;

function OnTriggerEnter (hit : Collider)
{
    //obstacles spawn
    if(hit.gameObject.tag == "Player")
    {
        var toSpawn : GameObject = obstacles[Random.Range(0,obstacles.Length)];
        var offset = lastSpawn.GetComponent<MeshRenderer>().bounds.extents + gameObject.GetComponent<MeshRenderer>().bounds.extents;
        offset.y = 0f;
        var spawn = Instantiate (toSpawn, lastSpawn.transform.position + offset), Quaternion.identity) as GameObject;
        lastTile = spawn;
    }
}

您可以计算已经放置了多少块瓷砖,并将其用作乘数。

private int tileCount = 1;

并在您的 OnTriggerEnter() 方法中:

var offset = new Vector3 (-90 * tileCount,0,0);
tileCount++;