Я создаю сценарий, который порождает кубики случайного размера (позже замененные низкополигональными зданиями), которые пролетают мимо игрока по оси 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 (), но она внезапно стала намного более интенсивной и негладкой.
Мой вопрос в том, как решить проблему и сделать расстояние между объектами постоянным, независимо от частоты кадров. .
Спасибо.