У вас есть несколько вариантов:
Любые Renderer
компоненты будут автоматически рассчитывать свою ограничивающую ось ограничивающую рамку, которую можно использовать для оценки визуального центра объекта:
Vector3 center = GetComponent<Renderer>().bounds.center;
Любые компоненты Renderer
автоматически рассчитают ограничивающий прямоугольник, выровненный по оси, который можно использовать для оценки физического центра объекта:
Vector3 center = GetComponent<Collider>().collider.bounds.center;
Использовать иерархию преобразований
Все в вашей сцене расположено в соответствии с его компонентом Transform
, который отслеживает положение в мире (относительно сцены) и локальное положение (относительно его родителя Transform
). Иногда полезно переопределить одно преобразование для другого, чтобы им было легче манипулировать ими или легче вычислять смещения между ними.
В зависимости от того, что вам нужно сделать, вы можете прикрепить пустой GameObject как ребенок и использовать позицию этого GameObject в качестве назначенной вам точки.
Использовать другое смещение
Наконец, не забывайте, что вы всегда можете вручную назначить смещение Vector3
для любой позиции, которую вы рассчитываете. Это потенциально неуклюжий обходной путь, но он работает в крайнем случае.