Равномерное размещение надписей вдоль изогнутой 3D-сетки
У меня есть игровой объект с одной сеткой, который по сути представляет собой длинную линию, которая изгибается и наклоняется вверх / вниз. Я пытаюсь создать текст вдоль этой строки с заданным интервалом расстояния. Допустим, каждые 100 единиц по строке должен появляться какой-то текст. Если бы это была прямая линия, это было бы легко, но изгибы и уклоны меня сбивают с толку.
Я получил вершины, которые создали эту сетку, выполнив:
model.GetComponent<MeshFilter>().mesh.vertices
Затем я преобразовываю их в мировое пространство, перебирая их и выполняя:
meshFilter.gameObject.transform.TransformPoint(vertices[i])
Теперь эти вершины НЕ расположены равномерно. У склонов и кривых много вершин. Для более прямых частей их меньше. Но эти прямые части все равно немного различаются (обычно на ~ 0,10 значения Y). Первоначально я просматривал и отслеживал расстояние, чтобы найти вершины, наиболее близкие к интервалу, но тогда я подумал, что они расположены равномерно.
Вот часть модели:
Я закрасил все вершины в черный цвет, чтобы показать, насколько они уплотнены на кривых / наклонных участках по сравнению с прямыми участками:
Вот инспектор для модели на всякий случай:
1 ответ
Вы используете статическую одиночную сетку?
В вашем решении, я думаю, проблема в вершинах. вам нужно найти вершины вдоль вашей линии и игнорировать их вертикальную группу, и это слишком сложно.
Если ваша сетка может быть изменена игроком, я предлагаю вам использовать компонент Trail Render Component, получить его вершины и решить простую задачу о рюкзаке, чтобы разместить ваших персонажей (предлагаем вам использовать TextmeshPro)