Создание объектов со случайным размером в пределах заданного диапазона с одинаковым расстоянием между ними независимо от частоты кадров - PullRequest
1 голос
/ 27 мая 2020

Я создаю сценарий, который порождает кубики случайного размера (позже замененные низкополигональными зданиями), которые пролетают мимо игрока по оси x, чтобы создать иллюзию нахождения в движущемся поезде. У меня есть здания, движущиеся с заданной скоростью, которая постоянна независимо от частоты кадров, используя Time.deltaTime.

Мой сценарий написан так, чтобы ждать достаточно времени, пока первый порожденный объект не сдвинется с пути, прежде чем возникнет следующий, и он отлично работает с заданным размером для объектов, но, похоже, не успеет, если я немного рандомизирую размер объекта в каждом кадре.

Это выглядит так:

public GameObject buildingPrefab;
    public GameObject spawnPoint;
    public float spawningRatio;
    public float randomSize;
    public float distanceBetween;
    public float ranMin;
    public float ranMax;


    float nextBuilding;
    float speed;


    // Start is called before the first frame update
    void Start()
    {
        ranMin = 10f;
        ranMax = 15f;
        distanceBetween = 5f;
        randomSize = 1;
        speed = buildingPrefab.GetComponent<ScrollingBuilding>().speed;
    }

    // Update is called once per frame
    void Update()
    {
        if(Time.time > nextBuilding)
        {
            spawningRatio = ((randomSize / 2) + (buildingPrefab.transform.localScale.x / 2) + distanceBetween) / (speed);

            nextBuilding = Time.time + spawningRatio;

            buildingPrefab.transform.localScale = new Vector3(randomSize, randomSize, randomSize);

            Instantiate(buildingPrefab, spawnPoint.transform.position, Quaternion.identity);

            randomSize = Random.Range(ranMin, ranMax);
        }
    }
}

Проблема, с которой я столкнулся, заключается в том, что расстояние между зданиями не всегда одинаковое, скорее всего из-за того, что частота кадров не полностью стабильна. Я попытался поместить функцию в FixedUpdate (), но она внезапно стала намного более интенсивной и негладкой.

Мой вопрос в том, как решить проблему и сделать расстояние между объектами постоянным, независимо от частоты кадров. .

Спасибо.

...