三维方向和旋转
-
预备知识
介绍
我们周围的很多物体都会旋转。当我们解释一个旋转时,我们需要注重下列这三个问题:
1. 轴线:物体正在围绕着哪个轴线旋转?
举个例子,这把雨伞正在以伞轴朝上,也就是和z轴一样的方向旋转。所以,我们说这把雨伞正在围绕着z轴旋转。
另外一个例子,这个轮胎正在围绕着它的中心枢纽,也就是和Y轴对齐的方向旋转。
如果轮胎是围绕着Z轴旋转的,它看起来会像下图展示的那样:
2. 方向:物体是顺时针旋转还是逆时针旋转?
为了确定旋转的方向,我们需要移动摄像头,从物体围绕旋转的轴线上方进行观察。
举个例子,这把雨伞正在围绕着Z轴旋转,我们需要从Z轴的上方观察,然后我们就会得知这把雨伞正在顺时针旋转。
另一方面,这个轮胎正在围绕着Y轴旋转,所以我们需要从Y轴的箭头处观察它的旋转,然后我们就会得知这把雨伞正在逆时针旋转。
3. 速度:物体正在以多快的速度旋转?
有时候我们需要一个物体在一张动图里持续旋转,而不是立刻旋转到一个目标角度。要指定旋转速度,最简单的方式是指定每秒钟旋转的角度。
举个例子,这架飞机大概花了4秒钟的时间来完成一个圈的旋转,也就是360°的旋转。所以我们可以说它正在以每秒90°的速度旋转。
手动旋转一个物体
要找出旋转一个物体需要的角度,你可以使用角色中,角色控制台的方向输入框来手动旋转一个物体。举个例子,方向Z的输入框就控制了围绕着Z轴的旋转角度。
需要注意的是,你手动指定的旋转方向在你重新打开程序时将不会被储存。你需要在程序中使用下列的编程积木来设定方向。
左转和右转编程积木
让我们从这两个你已经知道的编程积木开始。他们允许我们让物体围绕着Z轴旋转,相对于它现在的方向。
“面向方向”编程积木
这个编程积木允许你让物体围绕着Z轴旋转到指定的方向。需要注意的是,这个编程积木并不受物体现有的方向影响。如果物体的现有方向已经和指定的方向一样,那么这个编程积木将不会有任何效果。
“指向 X/Y” 编程积木
另一个可以被用来让物体围绕着Z轴旋转的运动编程积木是“指向 X/Y” 编程积木。当你知道目标点的X方向和Y方向时,这个编程积木非常有用。他让你节省了计算方向数值的时间。
绕某一个轴线旋转
上述介绍的编程积木只能够让一个物体围绕着Z轴旋转,要让物体可以围绕着三个轴线中的任一轴线旋转,你可以使用以下编程积木:
参数
-
围绕的轴线: 可以选择X轴、Y轴或者Z轴。
-
旋转的角度: 相比现有的方向下,物体应该要旋转的角度。如果数值为正数,当你从轴线箭头的上方观察时,物体将会顺时针旋转。举个例子,一个完整的圈是360°,而往反方向旋转是180°。
-
旋转的时长: 如果时长为零,那么物体将会立刻被旋转。如果时长不等于零,那么物体将会以动态的方式缓缓旋转。
演示
绕某一轴线旋转到指定方向
跟“指向方向”编程积木相似,这个新的编程积木可以让物体围绕着任一轴线朝指定方向旋转:
参数
-
指定角度: 物体需要转向的目标角度(无论物体现有角度是多少)。
-
围绕的轴线: 可以选择X轴、Y轴或者Z轴。
-
旋转的时长: 如果时长为零,那么物体将会立刻被旋转。如果时长不等于零,那么物体将会以动态的方式缓缓旋转。
演示
同时绕三个轴旋转到指定方向
如果你需要围绕不止一个坐标轴旋转物体,那么用这个积木会更方便些:
这里前三个输入分别是绕每个坐标轴需要旋转到的方向。之后,你可以设置这些旋转的用时。最后一个输入可以控制是否等待这些旋转结束后再运行下面的其他积木。据个例子,这里的三个“绕轴旋转“积木等同于下面的一个“旋转到“积木:
设置旋转速度
如果你想要一个物体一直抱持着一个目标速度旋转,你可以使用“设置速度”编程积木,它可以允许你设置围绕着每个轴线旋转的速度。需要注意的是,如果你设置的数值为正数,从物体围绕的轴线箭头处观察,物体将会顺时针旋转。
要让物体停止旋转,你只需要把旋转速度设置为0即可。
“最后一个添加的物体”规则
当同时存在很多个物体,旋转操作将会运用在旋转编程积木之前,最后一个被添加的物体上。
举个例子,第一个“旋转到角度”编程积木会被运用到在旋转编程积木被添加之前的红色盒子,而第二个“旋转到角度“编程积木会被运用到黄色盒子上。
-
-