Я пытаюсь создать префабы различной формы рядом друг с другом. У меня есть папка, полная объектов разного размера, которые позволяют мне случайным образом связать их вместе, чтобы создать бесконечный 2D бегун. Моя проблема заключается в том, что все ответы онлайн о размещении объектов рядом друг с другом не работают, когда используются объекты разных размеров. Вот код, который я использую для создания разделов. Это работает, когда он только случайным образом выбирает объекты одинакового размера. Если выбранный префаб имеет другую длину, он оставляет зазор или перекрывает предыдущий объект.
for(int i = 0; i < activeSectionsAtOnce; i++)
{
int index = Random.Range(0, sectionPrefabs.Length);
GameObject currentOb = sectionPrefabs[index];
Vector2 position = new Vector2();
if(activeSections.Count == 0)
{
//set a (0, 0) position for first object
position = Vector2.zero;
}
else
{
//get most recently placed object from list
GameObject lastOb = activeSections[activeSections.Count - 1];
//my attempt at getting bounds for the last object and for the next prefab that will be used
Bounds lasObbounds = new Bounds(lastOb.transform.position, Vector2.zero);
Bounds currentBounds = new Bounds(currentOb.transform.position, Vector2.zero);
//Include child objects(all have sprite renderers)
foreach (Renderer r in lastOb.GetComponentsInChildren<Renderer>())
{
lasObbounds.Encapsulate(r.bounds);
}
foreach (Renderer rend in currentOb.GetComponentsInChildren<Renderer>())
{
currentBounds.Encapsulate(rend.bounds);
}
//position object will be instantiated at
position.x = lastOb.transform.position.x + (lasObbounds.size.x / 2) + (currentBounds.size.x/2);
}
//instantiate at selected position
activeSections.Add(
Instantiate(currentOb, position, Quaternion.identity)
);
}
Это метод запуска. Я не уверен, что проблема в том, как я создаю границы или как я математически создаю координату x. Это ожидаемый результат, который происходит, когда я использую префабы одного размера Это то, что происходит с различными префабами Более короткий выступ от первого объекта должен быть чисто между двумя другими без зазора.
Вот изображение одного сборного
Спасибо за любой совет