2016-08-07 3 views
0

У меня есть GameObject с Quad MeshFilter. Размер по умолчанию равен 1x1, и я могу изменить его размер, установив его масштаб, но это также изменяет размеры всех его дочерних элементов относительно изменения масштаба. Я попытался дать ему RectTransform, но изменение ширины и высоты не изменило его размер. Регулярный компонент Transform не имеет элементов управления шириной и высотой.Установленные размеры сетки в Unity

Как установить размер сетки в Unity без масштабирования всех дочерних элементов?

+0

Вы хотите загрузить изображение ребенка GameObjects вы не хотите, чтобы изменить размер? Это будет полезно для того, чтобы придумать решение ... – Programmer

+0

Каковы ваши дочерние объекты (которые не нуждаются в преобразовании из родителя)? Вам нужны некоторые масштабированные, а некоторые нет? –

ответ

0

Unity рассматривает сетки, а также изображения и звуки, как активы, созданные за пределами приложения. Конечно, в Unity вы можете перемещать 3D-модели вокруг, масштабировать и вращать их, но это очень простые возможности 3D-моделирования, и вы не сможете правильно редактировать 3d-модели в нем. Лично я считаю, что этого достаточно только для грубых прототипов, сделанных из масштабированных кубов.

Итак, если вы хотите изменить эти активы, вы можете:

  1. Откройте отдельное приложение (Blender, 3ds Max, Maya для 3D-моделей) и создать сетку вы хотите. Вероятно, это решение, которое вы хотите.

  2. Создайте сценарий, который изменит Mesh object во время выполнения. Хотя это хорошее решение для некоторых проблем, возможно, это не то, что вы ищете.

  3. Используйте один из сторонних пакетов, которые предоставляют возможности 3D моделирования для Unity, например ProBuilder. Имейте в виду, что я не использовал его, и это не рекомендация. Я просто показываю, что эта альтернатива существует.

0

вам нужно известково это :)

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

В качестве примера вы имеете

actualBounds.x 100

масштаба во всех измерениях равно 1;

var expectedBoundX = 150 

var newScaleX = expectedBoundX/(actualBounds.x/scaleX); 

и после того, как просто установить эту newScaleX в X масштабе :)

Смежные вопросы