Получить положение Gizmos в Unity - PullRequest
0 голосов
/ 15 мая 2018

У меня проблема с определением центра игрового объекта.В Unity это дает мне точку, которая не находится в центре, но Gizmos расположены правильно.Так может кто-нибудь знает, как получить координаты Gizmos?

3D-модель была импортирована плагином PiXYZ, и все детали перепутаны с различными поворотами и т. Д. Белая сфера на рисунке ниже показывает центр выбранногоgameObject найден gameObject.position, но это не то, что нужно.

enter image description here

UPD:

Теперь я понял,то, что центральные точки поворота расположены в неправильных положениях (переключая режим редактора), это происходит из NX (программное обеспечение CAD), потому что объекты модели были перемещены преобразованиями.Я ничего не могу с этим поделать.Итак, я нашел сценарий - http://wiki.unity3d.com/index.php?title=SetPivot,, но он плохо работает с повернутыми объектами, что в моем случае необходимо.

Так что теперь мой вопрос может быть - «Как переместить точку поворотав центр визуального объекта? "

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

Here is the same part, but Gizmos now are in the pivot

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

У вас есть несколько вариантов:

Использование renderer.bounds

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

Vector3 center = GetComponent<Renderer>().bounds.center;

Использование collider.bounds

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

Vector3 center = GetComponent<Collider>().collider.bounds.center;

Использовать иерархию преобразований

Все в вашей сцене расположено в соответствии с его компонентом Transform, который отслеживает положение в мире (относительно сцены) и локальное положение (относительно его родителя Transform). Иногда полезно переопределить одно преобразование для другого, чтобы им было легче манипулировать ими или легче вычислять смещения между ними.

В зависимости от того, что вам нужно сделать, вы можете прикрепить пустой GameObject как ребенок и использовать позицию этого GameObject в качестве назначенной вам точки.

Использовать другое смещение

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

0 голосов
/ 15 мая 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...