Компонент Transform есть у каждого игрового объекта в Unity. Он определяет, где, как ориентирован и насколько крупным находится объект в мире игры. Понимание Transform — основа основ работы со сценой.
Координаты центра объекта в трёхмерном (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).
Поворот по трём осям (X, Y, Z), задаваемый градусами (0–360). То, что вы видите в инспекторе: Rotation X: 0, Y: 45, Z: 0.
- В инспекторе: введите
Y = 90— объект повернётся на 90° вокруг вертикальной оси. - В скрипте:
transform.eulerAngles = new Vector3(0, 90, 0);
Gimbal Lock (потеря одной степени свободы).
Например, если X становится ±90°, оси Y и Z начинают вращать объект одинаково.
Для большинства задач хватает, но для сложной 3D-анимации или камер лучше использовать Quaternion.
Математический способ представления поворота без блокировки осей. В инспекторе вы его не видите, но в коде и при интерполяции (плавных поворотах) он незаменим.
transform.rotation = Quaternion.LookRotation(target.position - transform.position);— повернуть объект лицом к цели.transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * speed);— плавный поворот.
Вам нужно, чтобы пушка всегда смотрела на врага. Через Euler это сложно (много if). С кватернионом — одна строка LookRotation.
Для ручной настройки в инспекторе вы всё равно используете Euler — Unity внутри переводит в кватернион.
Размер объекта по осям (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).
Связь между объектами, где один (родитель) ведёт за собой другого (ребёнка). Ребёнок движется, вращается и масштабируется относительно родителя.
В окне Hierarchy перетащите один объект на другой. Или в скрипте: transform.SetParent(parentTransform);
- Позиция ребёнка теперь локальная (относительно центра родителя). В инспекторе вы увидите
Position(серый текст) — это локальные координаты. - При движении родителя ребёнок движется вместе с ним.
- Если повернуть родителя, ребёнок тоже повернётся (но сохранит своё локальное смещение).
Вы создаёте персонажа:
- Родитель:
Character(управление перемещением). - Дочерние объекты:
Body,Hat,Weapon. Теперь, перемещаяCharacter, вы двигаете всего персонажа целиком. А если захотите поднять шляпу выше, меняете только локальнуюYуHat.
transform.position— глобальная позиция (мировые координаты).transform.localPosition— позиция относительно родителя.transform.lossyScale— глобальный масштаб (с учётом всех родителей).
- Для простых объектов и ручной настройки используйте Euler (инспектор).
- Для плавных поворотов и точной ориентации на цель в коде — Quaternion.
- Масштаб меняйте осторожно, особенно при наличии физики.
- Иерархия незаменима для группировки объектов и создания сложных моделей из частей.