# Transform组件
Transform组件用于控制实体的方位(位置、旋转、缩放),同时用于建立实体的父子层级关系。Transform组件不需要手动添加,创建实体时引擎会自动添加一个Transform组件。可以通过实体的transform属性访问Transform组件。
注意
Transform组件和Camera组件无法同时添加到同一个实体。
# 属性
🌏 sceneNode 关联的场景结点,只读。
// 获取关联的场景结点
const sceneNode = entity.transform.sceneNode;
2
🌏 bounds 外包范围,只读。
// 获取外包范围
const bounds = entity.transform.bounds;
2
🌏 parent 父Transform
// 获取父Transform
const parent = entity.transform.parent;
// 设置父Transform
entity0.transform.parent = entity1.transform;
2
3
4
5
🌏 children 子Transform,只读。
// 获取所有子Transform
const children = entity.transform.children;
2
🌏 visible 可见性控制
// 获取可见性
const visible = entity.transform.visible;
// 设置可见性
entity.transform.visible = false;
2
3
4
5
🌏 position 位置(Local)
// 获取位置
const position = entity.transform.position;
// 设置位置
entity.transform.position = [ 0.0, 10.0, 0.0 ];
2
3
4
5
🌏 scale 缩放量(Local)
// 获取缩放量
const scale = entity.transform.scale;
// 设置缩放量
entity.transform.scale = [ 2.0, 2.0, 2.0 ];
2
3
4
5
🌏 rotation 旋转量(Local)
// 获取旋转量
const rotation = entity.transform.rotation;
// 设置旋转量
entity.transform.rotation = [ 0.0, Math.PI, 0.0 ];
2
3
4
5
🌏 quaternion 旋转四元数(Local)
// 获取旋转四元数
const quaternion = entity.transform.quaternion;
// 设置旋转四元数
entity.transform.quaternion = [ 0.0, 0.0, 0.0, 1.0 ];
2
3
4
5
🌏 worldPosition 获取世界位置,只读。
// 获取世界位置
const worldPosition = entity.transform.worldPosition;
2
🌏 worldScale 获取世界缩放量,只读。
// 获取世界缩放量
const worldScale = entity.transform.worldScale;
2
🌏 worldQuaternion 获取世界旋转四元数,只读。
// 获取世界旋转四元数
const worldQuaternion = entity.transform.worldQuaternion;
2
🌏 worldDirection 获取世界朝向,只读。
// 获取世界朝向
const worldDirection = entity.transform.worldDirection;
2
# 接口
🌏 addChild 添加一个子Transform
// 添加一个子Transform
entity0.transform.addChild( entity1.transform );
2
🌏 removeChild 移除一个子Transform
// 移除一个子Transform
entity0.transform.removeChild( entity1.transform );
2
🌏 removeAllChildren 移除所有子Transform
// 移除所有子Transform
entity.transform.removeAllChildren();
2
🌏 traverse 遍历Transform自身及后代并执行回调。
// 遍历回调
entity.transform.traverse( ( t ) => {
// TODO:回调
} );
2
3
4
5
6
🌏 translateX 沿本地X轴平移
// 沿本地X轴平移
entity.transform.translateX( 100.0 );
2
🌏 translateY 沿本地Y轴平移
// 沿本地Y轴平移
entity.transform.translateY( 100.0 );
2
🌏 translateZ 沿本地Z轴平移
// 沿本地Z轴平移
entity.transform.translateZ( 100.0 );
2
🌏 translateOnAxis 沿本地坐标轴平移
// 沿本地坐标轴平移
entity.transform.translateOnAxis( [ 0.5773502691896258, 0.5773502691896258, 0.5773502691896258 ], 100.0 );
2
主要
平移坐标轴需要单位化!!!
🌏 rotateX 绕本地X轴旋转(单位:弧度)。
// 绕本地X轴旋转
entity.transform.rotateX( Math.PI * 0.3 );
2
🌏 rotateY 绕本地Y轴旋转(单位:弧度)。
// 绕本地Y轴旋转
entity.transform.rotateY( Math.PI * 0.3 );
2
🌏 rotateZ 绕本地Z轴旋转(单位:弧度)。
// 绕本地Z轴旋转
entity.transform.rotateZ( Math.PI * 0.3 );
2
🌏 rotateOnWorldAxis 绕世界坐标轴旋转(单位:弧度)。
// 绕世界坐标轴旋转
entity.transform.rotateOnWorldAxis( [ 0.5773502691896258, 0.5773502691896258, 0.5773502691896258 ], Math.PI * 0.3 );
2
主要
旋转坐标轴需要单位化!!!
🌏 localToWorld 本地坐标转世界坐标。
// 本地坐标转世界坐标
const worldPosition = entity.transform.localToWorld( [ 10.0, 0.0, 0.0 ] );
2
🌏 worldToLocal 世界坐标转本地坐标。
// 世界坐标转本地坐标
const localPosition = entity.transform.worldToLocal( [ 10.0, 0.0, 0.0 ] );
2