Skip to content

Latest commit

 

History

History
108 lines (75 loc) · 6.86 KB

File metadata and controls

108 lines (75 loc) · 6.86 KB

🧩 Transform в Unity: Позиция, Поворот, Масштаб и Иерархия

Компонент Transform есть у каждого игрового объекта в Unity. Он определяет, где, как ориентирован и насколько крупным находится объект в мире игры. Понимание Transform — основа основ работы со сценой.


📍 1. Позиция (Position)

Что это:

Координаты центра объекта в трёхмерном (X, Y, Z) или двухмерном (X, Y) пространстве.

Где задаётся:

В окне Inspector у компонента Transform → поля X, Y, Z.

Как использовать:

  • Изменяйте числа прямо в инспекторе, чтобы переместить объект.
  • В скрипте: transform.position = new Vector3(5, 0, 2);
  • В Scene View перемещайте объект инструментом Move (горячая клавиша W).

Пример:

Вы хотите поставить куб на платформу на высоте 2 метра. Установите Y = 2. Если позже решите переместить платформу, куб останется на месте (если он не дочерний). Для связи используйте иерархию (см. раздел 4).


🔄 2. Поворот (Rotation)

🔸 Euler Angles (углы Эйлера)

Что это:

Поворот по трём осям (X, Y, Z), задаваемый градусами (0–360). То, что вы видите в инспекторе: Rotation X: 0, Y: 45, Z: 0.

Как использовать:

  • В инспекторе: введите Y = 90 — объект повернётся на 90° вокруг вертикальной оси.
  • В скрипте: transform.eulerAngles = new Vector3(0, 90, 0);

⚠️ Проблема Euler:

Gimbal Lock (потеря одной степени свободы). Например, если X становится ±90°, оси Y и Z начинают вращать объект одинаково. Для большинства задач хватает, но для сложной 3D-анимации или камер лучше использовать Quaternion.

🔸 Quaternion (кватернион)

Что это:

Математический способ представления поворота без блокировки осей. В инспекторе вы его не видите, но в коде и при интерполяции (плавных поворотах) он незаменим.

Как использовать в коде:

  • transform.rotation = Quaternion.LookRotation(target.position - transform.position); — повернуть объект лицом к цели.
  • transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * speed); — плавный поворот.

Пример (сравнение):

Вам нужно, чтобы пушка всегда смотрела на врага. Через Euler это сложно (много if). С кватернионом — одна строка LookRotation. Для ручной настройки в инспекторе вы всё равно используете Euler — Unity внутри переводит в кватернион.


📏 3. Масштаб (Scale)

Что это:

Размер объекта по осям (X, Y, Z) относительно его исходной модели (где Scale = 1, 1, 1).

Где задаётся:

Inspector → Transform → Scale.

Как использовать:

  • Увеличьте X до 2 — объект станет вдвое шире.
  • В скрипте: transform.localScale = new Vector3(2, 1, 1);
  • Не рекомендуется менять масштаб у объекта со сложными коллайдерами (Mesh Collider) — могут возникнуть проблемы с физикой.

Важно:

Если у родителя Scale = (2, 2, 2), а у дочернего объекта Scale = (0.5, 0.5, 0.5), то реальный размер дочернего = (2*0.5, 2*0.5, 2*0.5) = (1, 1, 1).


👪 4. Иерархия (Parent / Child)

Что это:

Связь между объектами, где один (родитель) ведёт за собой другого (ребёнка). Ребёнок движется, вращается и масштабируется относительно родителя.

Как создать:

В окне Hierarchy перетащите один объект на другой. Или в скрипте: transform.SetParent(parentTransform);

Что меняется:

  • Позиция ребёнка теперь локальная (относительно центра родителя). В инспекторе вы увидите Position (серый текст) — это локальные координаты.
  • При движении родителя ребёнок движется вместе с ним.
  • Если повернуть родителя, ребёнок тоже повернётся (но сохранит своё локальное смещение).

Пример:

Вы создаёте персонажа:

  • Родитель: Character (управление перемещением).
  • Дочерние объекты: Body, Hat, Weapon. Теперь, перемещая Character, вы двигаете всего персонажа целиком. А если захотите поднять шляпу выше, меняете только локальную Y у Hat.

Доступ к данным в скрипте:

  • transform.position — глобальная позиция (мировые координаты).
  • transform.localPosition — позиция относительно родителя.
  • transform.lossyScale — глобальный масштаб (с учётом всех родителей).

🧠 Итоговые советы

  • Для простых объектов и ручной настройки используйте Euler (инспектор).
  • Для плавных поворотов и точной ориентации на цель в коде — Quaternion.
  • Масштаб меняйте осторожно, особенно при наличии физики.
  • Иерархия незаменима для группировки объектов и создания сложных моделей из частей.

⭐ Если этот проект был полезен, поставьте звезду на GitHub!