Единство создает объект в списке и уничтожает его из списка и игры. - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь создать участок местности, когда сфера 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 уменьшается при движении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...