Scratch模拟下雪动画
2020-08-11Intoweb
Intoweb
本文将带你通过对下雪天气的特征提取,综合使用Scratch自带素材库,制作夜晚下雪,树冠积雪,天亮雪化的动画。这个实例综合运用了Scratch多项特性,可以帮你加深对Scratch外观特效的理解。
一、下雪天气特点提取
下雪是常见的气候,那么我们将其转化为程序,就可以更好地理解程序与现实的相同与不同,明白构建程序需要的特征与可以舍弃的特征。
若我们要模拟下雪,首先要确定程序的演示目标,雪从天上落下来,要堆在地面上,堆在树上,天亮后融化……
最终定下动画要完成的三个特征:落下、堆积、融化。
程序分为夜晚和白天两个部分,夜晚雪花落下并堆积。白天,切换白天背景,停止落雪程序,开始雪花融化程序。
二、 角色的选择与制作
1. 我们复制背景库中的Blue Sky作为一个新的角色,选择Blue Sky作为背景,在绘制背景中,直接将蓝天背景拖到原小猫角色里面去,再删除原小猫角色即可。
2. 为了体现白天与黑夜的区别,我们这里添加一个太阳(Sun)角色来表明是白天。
3. 添加雪花(Snowflake)角色,即可完成所有角色的选择。
三、 夜晚背景的制作
落雪发生在夜晚,我们需要对原Blue Sky做修改,把它变成昏暗的夜晚。
对蓝天背景进行修改,用选择工具点击蓝色天空部分,点填充,拖动颜色亮度条,修改出夜色。
然后是绿树的部分,我们使用选择工具点击绿树时,会发现它是多个角色组合而成的,我们这里按住“Shift”键,开启多选模式,将所有绿树部分选中。选择组合,然后将轮廓修改为无轮廓,颜色修改为更深的绿色。
改完树木后,发现绿树挡住了一部分棕色的道路,选择道路,将其放最前面。
四、 雪花的落下
本体隐藏,克隆体显示,我们曾经研究过克隆体数量上限问题,300片雪花做不出积雪的效果,所以当克隆体雪花落到地面后,用画笔的图章工具在原地留下印记,然后删除掉克隆体。
为了雪花更逼真,给它加上虚像特效、随机大小、一直旋转。
雪花从空中飘落时并不是垂直下落,我们给每个雪花随机的起点与落点,这样每个雪花的飘落方向就完全随机了。起点统一选择上边缘,即(-240~240,180)。落点在道路上,x坐标仍然为-240~240,y坐标为-180~-160。下落时间可以设定为随机4~8秒。
五、 雪花的堆积
下雪時总有部分雪花落在树上,我们通过随机参数产生一个概率判断,让1/4的雪花落在树梢上,剩下的落在路上。
设置概率的方法,可以使用随机数。例如1/4的概率,产生1到4的随机数,判断当数字等于1时执行条件。
遇到树冠的判断使用取色器选取树的颜色作为标记。
由于树在道路上方,根据透视原理,可以理解为树离我们更远,那么树上的雪花应该更小。
树的边缘并不平整,所以落点可以有一定起伏。
六、 雪花的融化
为了实现雪花的融化效果,我们需要让雪花缓慢消失,雪花由于数量较多,克隆体数量有上限(300个),所以使用图章制作,图章绘制的图案是无法编写程序的。因此只能通过其他方法影响雪花图案,给人雪花在缓慢消失的错觉。
我们这里使用一张与原背景图相同的角色(Blue Sky原图复制的角色)缓慢出现在最上层,覆盖雪花,来制作雪花融化特效。
用空格键作为信号,开始时隐身(虚像效果100),按下空格键后通知蓝天角色逐渐显示,具体程序需使用外观特效中的虚像特效(虚像效果重复减小直到0)。
蓝天角色(非背景)代码如图:
七、 太阳出现动画
太阳开始时隐藏,当按下空格键后等待一会儿再慢慢从边缘移到舞台中间偏上的位置。
八、 用下雪变量控制场景变化
为了让雪花白天停止飘落,所以我们需要设一个变量“下雪”,当“下雪”为“假”时通知雪花停止克隆。
总结:这个下雪动画充分利用了编程的优势,综合运用克隆、图章、随机数、概率、颜色判断等多项Scratch功能和技巧,模拟出比普通动画更自然的下雪效果,希望你能把这些技巧灵活运用到其他动画中去。