Scratch项目式编程实战:打造超酷大型游戏
上QQ阅读APP看书,第一时间看更新

3 字符跃动

3.1 背景特效

在前面内容中我们了解到舞台中x轴的数值范围为-240~240,y轴的数值范围为-180~180,在接下来绘制背景时要注意长宽比例。鼠标单击背景缩略图选中背景,将功能操作区切换为背景面板,绘制背景时的各类操作与绘制造型时基本保持一致。接下来将创建项目时生成的默认背景名称修改为“开场背景”,并将编辑模式切换为位图编辑模式。调整画笔大小为1,放大画布至可以清晰地观察造型中心,选择合适的颜色按照比例绘制一个简单的色块交错背景,案例中绘制的是一个大小为8×6的灰白交错网格。

因为背景与舞台之间的位置关系是绑定的,所以与角色相比背景缺少了许多属性,没有坐标用于实现背景的移动,没有放大缩小用于调整呈现在舞台的比例,无法隐藏也无法进行旋转。我们绘制的背景在画布中呈现何种效果,那么舞台中的背景就是何种效果。使用选择工具并框选绘制好的灰白网格,保持选区的长宽比例拉伸放大至铺满画布。先使用鼠标对位置进行粗略调整,再通过键盘的方向键对位置进行精细调整,反复操作几次就可以得到一个最佳的显示效果。

单纯的灰白网格太过单调,无法很好地吸引到玩家的注意力,那么我们来给它增加一些特效吧。

在外观类别中有【将()特效增加()】和【将()特效设定为()】两个可以对背景进行特效处理的代码模块。其中【将()特效设定为()】常用来进行背景特效的初始设置,而【将()特效增加()】配合【重复执行】则用于实现背景特效的动态变化。有些时候我们会使用多种特效来增添效果,此时【清除图形特效】将是一个十分好用的可以对背景进行初始特效设置的代码模块。

能够施加的特效包括颜色、鱼眼、漩涡、像素化、马赛克、亮度和虚像,使用时需要注意各种特效的数值范围。颜色、鱼眼、漩涡和亮度四种特效值为矢量,矢量是一种既有大小又有方向的量,这些特效值的正和负会在变化趋势上呈现相反效果。像素化、马赛克和虚像三种特效值则为标量,标量只有大小。下面我们使用颜色特效来为背景增添一些变化,大家也可以尝试使用其他特效。

具体设置如下图所示。

3.2 角色运动

我们将此项目命名为My Game,并绘制相应的六个字符角色,拆分成多个角色进行绘制是为了便于制作更丰富的动态效果。大家也可以为自己的项目进行命名,并绘制相应的字符角色。绘制时可以参考各种具有特色的字体来进行创作,因为本项目整体风格偏向像素化,所以这里推荐04B_30和04B03两种字体供参考。在进行绘制时要注意,造型中心的设定要符合英文书写格式,如下图所示。

接下来我们对字符角色进行初始设置,首先将大小设置为合适的数值,再通过鼠标在舞台中拖拽字符角色来确定其大致位置,思考一下为什么要先设置大小后设置位置。下面在角色当前坐标的基础上进行细微调整,为每个字符角色确定准确的初始位置。以字符角色M为例,其初始设置程序如右图所示。

之后依次完成各字符角色的初始设置,舞台效果如下图所示。

接下来为字符角色添加一些动态效果,首先让字符角色向上运动一段距离,运动类别中的【将y坐标增加()】可以实现角色上移的效果。之前我们使用过【重复执行】来实现无限制的循环结构,此时我们只需要角色上移若干次即可,可以在控制类别中找到【重复执行()次】来实现指定次数的循环。

然后让字符角色重复进行上下跃动,即将有限次的向下运动与有限次的向上运动作为一个运动周期来重复执行。按照刚刚制作程序的思路,我们需要找到【将y坐标减少()】来实现角色下移的效果,但是在运动类别中并没有此代码模块,那么如何来实现角色下移呢?其实我们只需要通过在【将y坐标增加()】中填写负数,这样就可以实现角色下移的效果了。不仅仅是角色下移,在其他各代码模块中需要进行减少的操作都是通过填写负值来实现的。

下面我们还是以字符角色M为例来展示角色实现跃动效果的程序,其余字符角色的程序只需修改初始设置中的位置坐标即可,具体设置如下图所示。

运行程序会发现,舞台中所有字符角色一直保持在相同高度上下跃动,这看起来十分呆板。但是只要按照字符角色排列时的先后顺序,使用【等待()秒】在初始设置后为其添加适当的等待时间,就可以赋予各字符角色不同的跃起时间,这样在舞台中会呈现出如下图所示的动态波浪效果。

通过文字描述和画面截取只能简单地表达出变化的趋势,而运行程序后则可以看到更加丰富的动态表现效果。大家阅读本书后一定要尝试自己动手制作每部分的内容,不仅仅是为了更好地掌握知识与概念,同时作品呈现出的绚丽效果将会让你更有动力去探究后续的内容。

3.3 飞入动画

如果想要尝试更复杂的运动效果,可以在跃动之前再增加飞入效果。将字符角色的初始位置设置在舞台的边缘处,重复执行向跃动的初始位置移动,到达跃动的初始位置后继续执行之前设置好的跃动效果。

简单的飞入效果可以通过跃动的初始位置坐标减去边缘的初始位置坐标得到x坐标和y坐标各自需要变化的差值,再分别除以用于实现飞入效果的步数,得到每一步x坐标和y坐标各自需要变化的数值。通过将【将x坐标增加()】、【将y坐标增加()】和【重复执行()次】组合使用以实现使字符角色匀速从边缘运动到中间的效果。

如果想要飞入效果的速度由快到慢,最终停止在跃动的初始位置处,那么首先要通过运算类别中的减法运算【()-()】和运动类别中记录角色当前坐标的(x坐标)、(y坐标)计算出角色跃动的初始位置坐标与当前位置坐标的差值,然后使用运算类别中的除法运算【()/()】和【在()和()之间取随机数】计算出每步x坐标和y坐标的变化量。以字符角色M为例,变速飞入效果程序设置如下图所示。

飞入效果如下图所示。

快速复制小技巧

如果两个角色有相似的程序段,例如此项目中的各字符角色,那么可以直接使用鼠标拖拽角色M中的程序段放到其余角色中,软件会自动进行复制和粘贴。如果通过单击鼠标右键复制程序段后再将程序段拖拽到其余角色中,那么被复制角色中将会保留两个相同的程序段,可能会对运行效果产生不良影响。