无限和随机环境产生
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++;
我正在努力实现一个无穷无尽的 运行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++;