Я пытаюсь создать участок местности, когда сфера obj.z проходит за полпути моего ландшафта obj.z, и удаляю его, когда он проходит мимо камеры.z Поскольку я создал много ландшафтов одновременносписок территорий:
private List<nicoTerrain> terrains = new List<nicoTerrain>();
Я запускаю 3 из них в Start ()
void Start () {
terrains.Add(Instantiate(terrainOriginal));
spawnPos += new Vector3(0, 0, terrainOriginal.transform.localScale.z/1.1f);
terrains[terrains.Count - 1].transform.position = spawnPos;
//create 2 more.
terrains.Add(Instantiate(terrainOriginal));
spawnPos += new Vector3(0, -30, -terrainOriginal.transform.localScale.z);
terrains[terrains.Count - 1].transform.position = spawnPos;
//Last one Bois
terrains.Add(Instantiate(terrainOriginal));
spawnPos += new Vector3(0, -30, -terrainOriginal.transform.localScale.z);
terrains[terrains.Count - 1].transform.position = spawnPos;
Debug.Log("got to the end of start bois");
}
, но у меня возникают проблемы с моим обновлением:
void Update () {
sphereVel = sphere.GetComponent<Rigidbody>().velocity.z;
if (terrains[terrains.Count - 2].transform.position.z > sphere.transform.position.z && sphereVel > 1){
terrains.Add(Instantiate(terrainOriginal));
spawnPos += new Vector3(0, -30, terrainOriginal.transform.localScale.z * sphereVel * 0.9f);
terrains[terrains.Count - 1].transform.position = spawnPos;
}
else if(sphere.transform.position.z < terrains[terrains.Count - 2].transform.position.z - terrains[terrains.Count - 2].transform.localScale.z / 2)
{
terrains.Add(Instantiate(terrainOriginal));
spawnPos += new Vector3(0, -30, -terrainOriginal.transform.localScale.z);
terrains[terrains.Count - 1].transform.position = spawnPos;
}
if(terrains[0].transform.position.z > mainCamera.transform.position.z){
Destroy(terrains[0]);
terrains.Remove(terrains[0]);
}
Debug.Log("Sphere Velocity: " + sphereVel);
Debug.Log("Terrains Count: " + terrains.Count);
}
оператор destroy if «не установлен для экземпляра объекта» и мой первый оператор if никогда не вызывается.Мои символы «больше» и «меньше» инвертированы, потому что сфера .z уменьшается при движении.