UEDL8-3——移动、旋转、缩放
UEDL8-3——移动、旋转、缩放
本章代码关键字
1 | Handles.PositionHandle() //为某个点加上移动轴,方便在Scene窗口上控制其位移 |
Handles中的移动轴
移动轴指的是Scene窗口上用于移动对象位置的三个箭头:
移动轴有两个API,它们的作用和用法是一致的,它们都会为场景上某个点(可以是对象的位置)添加移动轴控制器,方便控制其位置移动
-
Handles.DoPositionHandle(位置, 角度); -
Handles.PositionHandle(位置, 角度);
该方法需要传入 要添加移动轴控制器的点的位置 和 该点的旋转角度,返回由移动轴控制器控制移动过后的位置
(旋转角度用来旋转移动轴控制器,使得移动轴控制器与该点的本地坐标系同步,如果传入0角度,则移动轴控制器控制的移动将会是基于世界坐标系的)
1 | private Lesson26 targetObj; |
效果如下:
(该移动轴会在选中该对象时一直显示在场景上,即使你选择的不是位移工具)
值得一提的是,这个移动轴不一定非要配套对象的位置消息,它还可以用来控制某个Vector3的点在场景上的位置,
如果要使用基于这个Vector3坐标的本地坐标系,还需要声明配套的四元数消息,然后传入到该方法内
例如下面的控制线段的绘制终点代码:
1 | private Lesson26 targetObj; |
效果如下:

Handles中的旋转轴
旋转轴指的是Scene窗口上用于旋转对象的三个圆弧:
关于旋转轴有两个API,它们的作用和用法是一致的,它们都会为场景上某个点(可以是对象的旋转角度)添加旋转轴,方便控制其旋转
-
Handles.DoPositionHandle(位置, 角度); -
Handles.PositionHandle(位置, 角度);
该方法需要传入要添加旋转轴的旋转角度和位置,返回由旋转轴控制旋转过后的角度(四元数)
(位置用来控制移动轴的位置,使得旋转轴与该点的位置同步,可传入固定的位置,使得旋转轴可以不跟随对象的位置)
1 | private Lesson26 targetObj; |
效果如下:
Handles中的缩放轴
缩放轴指的是Scene窗口上用于缩放对象的三个轴:
关于缩放轴有两个API,它们的作用和用法是一致的,但缩放轴的参数与移动轴和缩放轴有较大的不同:
-
返回值:由缩放轴控制缩放过后的缩放
-
参数一:要控制的缩放消息
-
参数二:位置,决定缩放轴的位置
-
参数三:角度,决定缩放轴的旋转角度
-
参数四:
HandleUtility.GetHandleSize(位置)
HandleUtility.GetHandleSize()方法的作用是获取给定位置的操纵器控制柄的世界空间大小
使用当前相机计算合适的大小,它决定了控制柄的缩放大小简单来说,就是如果该方法参数传入的是
Vector3.zero,则缩放轴会随着摄像机的距离而改变大小,距离摄像机越远越小
而如果传入的是被添加缩放轴的点的位置,则缩放轴的大小是恒定的,不会随着摄像机的距离而改变大小,和移动轴和旋转轴的效果一样
1 | private Lesson26 targetObj; |
效果如下:
