预备知识
说明
当一个化身(avatar,也叫替身或者人像)做出三维动画的时候,它是在快速的展示一系列的身体姿势。每个姿势都会定义化身各个部分的位置和角度。举个例子,下图展示奔跑动画中的五个姿势。
在一个化身被加载之后,它只知道怎么样运行“待命”这个动画,也就是站在原地,什么都不做。你可以很简单地为化身添加其他的动画,就好像你在“教”这个化身去做更多事情一样。要使用动画,你需要知道如何做三件事情:如何添加动画到化身,如何开始一个动画以及如何停止一个动画。
把动画添加到化身的编程积木
下面这个积木可以“教会”一个化身如何做一个或者多个动画动作:
- 动画名称列表: 在化身中被允许的动画列表。当你点击“请选择”输入框时,一个新的窗口会展示所有你可以选择的预先建好的动画。需要注意的是,你可以同时选择很多个动画。当你点击选择任何动画时,它将会被陈列在窗口的顶部。你可以点击陈列在顶部的任何动画来取消它。最后,你需要点击右上角的”确认“按钮。
- 在你确认需要添加的动画列表之后,它们的名字会被一个一个地添加到列表中,之间以逗号分隔开。举个例子,下列的编程积木包含两个名为“快跑”和“打败”的动画:
运行结果
当你运行这个编程积木的时候,被选择的动画将会被下载并添加到这个化身模型中。需要注意的是,这个编程积木只能在化身被加载到场景中之后被使用。事实上,这个编程积木通常会被直接放置在“添加化身”积木的下面。
此外,你只需要在化身上添加一次动画,当动画已经被添加到化身之后,你不需要再次添加他们。一个很常见的错误就是在一个循环里重复运行“添加动画”积木。换句话说,如果一个化身已经学会了怎样跑,你就不需要再一遍一遍的教他怎样跑了。
开始动画的编程积木
这个积木可以用来开始运行一个新的动画:
-
动画名称: 需要被运行的动画名称。当你点击“请选择”输入框时,一个新的视窗会展示所有你可以使用的动画。需要注意的是,你要选择的动画必须在此之前已经被包含在“添加动画”积木中。举个例子,要运行“飞”的动画,你需要先在化身中添加“飞”这个动画,否则它将不知道怎么样“飞”。
-
循环: 如果“是”,那么动画会在它完成播放时就会重新开始;如果“否”,那动画将会在播放一次之后停止,并把化身静止在最后一个姿势,直到你开始另一个动画。
-
从%: 动画以百分比来计算的起始点,它可以是0到100之间的任何数值。举个例子,假设动画有40个姿势,而如果我们把“从%”设置成50,那么动画将会在第20个姿势开始,而不是从第一个姿势开始。
-
到%: 动画以百分比来计算的结束点,它可以是0到100之间的任何数值,并且不小于“从%”。举个例子,假设动画有40个姿势,如果我们把“到%”设置成80,那么动画将会在第32个姿势结束。这个时候,如果“循环”为“是”,那么动画会回到“从%”指定的姿势重新开始运行。如果循环为“否”,那么动画将会静止在第32个姿势。
-
速度比例: 速度比例控制播放动画的速率。当它是100时,动画会以它原本的速度播放。如果数值大于100,比如200,那么动画将会以2倍速播放,也就是说,每两个相邻的姿势之间的间隔时间会减少一半。需要注意的是,速度比例不会影响开始和结束的姿势,只是控制姿势一个个被展现出来的速度。
-
运行模式: 如果是“需等待的”,那么程序逻辑将会在这个积木运行完毕之前都被暂停在这个积木上;如果是“可继续的”,那么程序逻辑将在开始动画后立刻继续到这个积木下方的其他积木。举个例子,如果你把动画设置成重复执行,并也把它设置成“需等待的”,那么这个积木下方的积木都将不会被运行。
-
偏移 x/y/z: 在开始一个动画的时候,你可以在不改变化身的位置的情况下让它的身体偏移一个距离。如下图示例, 当一个化身从“待命”转而开始“飞”的动作的时候,它的飞行高度就是它的脚下。这看起来有的别扭。要解决这个问题,我们可以在Z方向增加一个偏移距离,这样化身的身体中心就不会改变太多。
- 进度列表 和 广播消息列表: 最后 2 个输入允许你在动画运行期间的某些时间点自动广播消息。 “广播消息列表”输入接受一个或多个以逗号分隔的消息,例如“移动,返回”(你必须在此之前使用“接收消息”积木来定义这些消息)。 “进度列表”输入接受一个以逗号分隔的进度时间列表,例如“50,100”代表进度50%和100%。你必须确保消息的数量和进度点的数量相同。在下面的示例中,我们让化身开始循环运行跳舞的动画,并且在每次进行到 50% 和 100% 两个进度的时候广播“变色”这个消息:
运行结果
当运行“开始动画”这个编程积木时,化身将会根据你指定的参数来运行特定的动画。如果化身已经在运行其他指定的动画,那么那个动画将会被先停止。
需要注意的是,大部分动画都是由“原地不动”的姿势组成,就是说动画并不改变化身的位置。举个例子,要让一个化身奔跑,你需要在播放“跑”的动画的同时另外改变化身的位置(比如使用移动积木)。不然的话,化身会在原地跑步。
示例
程序: 这个程序添加两个动画到机器人化身,并以“重复循环”模式运行“奔跑”动画。因为动画是“可继续的”,在它下方的重复循环编程积木会直接开始,让角色向前移动。
结果展示
停止动画
有时你可能希望化身停止当前正在运行的动画,例如停止奔跑或停止跳舞。你会发现并没有“停止动画”的积木。相反,你应该让化身开始“待命”动画。
如下图所示,你可以使用按钮控件来添加两个按钮:其中一个按钮使化身跳舞,而另一个按钮使其回到待命状态: