В A-Frame позиционирование объектов осуществляется с помощью
компонента position, который определяет
координаты объекта в трехмерном пространстве сцены. Этот компонент
задаёт положение объекта относительно родительской сущности или, если
родитель отсутствует, относительно глобальной сцены.
Компонент position принимает значения в виде строки с
тремя числами через пробел или в виде объекта с полями x,
y, z:
<a-box position="1 2 -3"></a-box>
Эквивалентно:
<a-box position="{x: 1, y: 2, z: -3}"></a-box>
Все координаты задаются в условных единицах сцены A-Frame, где 1
единица обычно соответствует одному метру виртуального пространства. При
необходимости масштабирования сцены компонент scale
изменяет видимые размеры объектов, но не влияет на координаты
position.
Позиция объекта всегда определяется относительно его родителя:
<a-entity position="0 1 0">
<a-box position="1 0 0"></a-box>
</a-entity>
В этом примере a-box будет находиться на координатах
(1, 1, 0) в глобальной системе сцены:
x = 0 + 1, y = 1 + 0,
z = 0 + 0.
Компонент position поддерживает отрицательные значения и
дробные числа, что позволяет точно располагать объекты:
<a-sphere position="-0.5 1.75 2.3"></a-sphere>
x = -0.5 — смещение влево на полметра.y = 1.75 — высота над базовым уровнем.z = 2.3 — удаление объекта от камеры на 2.3
единицы.Позицию можно изменять в реальном времени, используя методы A-Frame:
const box = document.querySelector('a-box');
// Установка новой позиции
box.setAttribute('position', {x: 2, y: 3, z: -1});
// Получение текущей позиции
const currentPos = box.getAttribute('position');
console.log(currentPos.x, currentPos.y, currentPos.z);
Также доступна работа с отдельными координатами:
box.object3D.position.y += 1; // Поднимает объект на 1 единицу вверх
Компонент position тесно интегрирован с компонентом
animation для создания плавных
переходов:
<a-box position="0 1 -3" animation="property: position; to: 0 3 -3; dur: 2000; easing: easeInOutQuad"></a-box>
Параметры:
property — изменяемый атрибут, в данном случае
position.to — конечное значение позиции.dur — длительность анимации в миллисекундах.easing — функция плавности движения.rotation: поворот родителя влияет на
локальные координаты дочерних объектов.scale: масштаб родителя влияет на
восприятие расстояния, но координаты position остаются
численно прежними.look-at: объект можно одновременно
позиционировать и заставлять «смотреть» на другую сущность, что полезно
для камер и интерфейсных элементов.position позволяют создавать динамичные VR/AR
сцены без ручного обновления координат в цикле.y — вверх,
z — глубина относительно камеры, x —
горизонталь.<a-entity position="0 0 0">
<a-box position="1 0 0" rotation="0 45 0"></a-box>
<a-sphere position="0 1 0" scale="0.5 0.5 0.5"></a-sphere>
</a-entity>
В данном примере a-box и a-sphere имеют
локальные позиции относительно родительского a-entity, что
позволяет легко перемещать всю группу объектов одной командой.
Понимание компонента position является фундаментом для
построения любых сцен в A-Frame, от простых моделей до сложных
интерактивных VR-пространств. Он обеспечивает контроль над расположением
объектов, их взаимодействием и анимацией в трехмерном пространстве.