Scratch少儿编程第75讲-海洋世界-进阶版
进阶教程不光是把程序做得复杂,更多时候是把程序的细节处理好,今天CC哥就把海洋世界之前做过的一个最初级的程序,配上一些细节的完善,让大家再看看这个游戏跟初级课程做的游戏会有什么区别。
先看看游戏视频:
视频没看清楚的地方,下面一步步介绍。
气泡的优化思路
1:首先CC哥第一眼就觉得之前的游戏里最大的问题就是气泡不会动。
因为这只是个背景图片,气泡当然不会动了,那我们想把它变成会动的气泡,那不就生动了?
如何变成会动的气泡呢?CC哥开始思考相应的物理知识:
1:气泡在浮起的时候,随着压强的降低,是不断变大的。
2:因为变大,受到的浮力也不断增大,所以气泡是不断加速上浮的,而且加速度越来越快的。
3:因为受到各种外部环境影响,气泡是不可能直线上浮的,是在上浮过程中左右晃动的。
有了这些物理知识,那么CC哥要做的气泡程序就必须符合这个条件才行。
看到这里大家明白没有?刚才你看到的游戏视频里的气泡可不是什么动图和造型切换,而是CC哥用编程做出来的。
通过这个动图大家观察出来气泡怎么产生的了吗?
气泡的程序设计
首先这个CC哥是用克隆体来做的:
1:第一步要设计好气泡的样子和冒出的位置
气泡就是一个绿色的小点。CC哥构想有海底冒出三个气泡的位置,直接copy了三个气泡的角色,这样可以简化编程。这三个角色的代码都是一模一样的。
2:不断克隆自己
克隆的时间间隔,CC哥用了讲过的随机数技巧,平常的随机数只能取整数,但是CC哥想要的随机的时间间隔很短,大概在0.02秒和0.06秒之间,所以我们只要把取得随机数除以50,就可以得到小数的随机数。
3:气泡上升过程中的变化:
这段代码主要注重两部分:
a: 上升加速
上升加速有两种方法,一种是用加法,一种是用乘法。区别就是固定加速度还是变加速度。比如我们平常模拟重力效果时就用加法,我们会把上升速度每次循环时固定增加1或-1,这就是固定加速度。而乘法是我们每次把加速度的值每次循环乘以一个系数,那么这种变化就会产生累积,会越来越大。比如:1.1 * 1.1 * 1.1 * 1.1 * 1.1 * 1.1 * 1.1 = 1.95。这就是炒股里说的复利,每年只赚10%,七年下来就赚翻翻了。
另外考虑多一个细节,就是每次气泡冒出来的大小是不固定的,有的出来小些,有的大些。
为什么这么考虑?是想让气泡在上升的过程中有交错的效果,比如大的气泡升的快,就会超过小的气泡,视觉效果就更真实。所以初始的上升速度是跟气泡的大小有关系的。
b: 水平晃动
跟晃动部分相关的代码:
1:晃动只要处理X轴的运动效果就可以。
2:用正弦函数就可以得到一个-1~1之间的变换值。再配上Y轴的运动,就会产生螺旋上升的效果。
3:设置晃动变量增加的数值,是为了控制气泡群的宽度,晃动增加的越快,气泡群的直径就越窄。
4:在每次循环的运动过程中用了随机数来变换振幅,这样就可以造成上升过程中的随机运动效果,而不是一个标准的螺旋上升曲线。
有没有觉得CC哥思考得还是很周全的?程序不复杂,但是效果很好。这一直是CC哥追求的,越简单越完美。
顺便优化一下鲨鱼
这一讲主要是讲气泡的,但是CC哥在做完了气泡之后,就停不下来,还想把鲨鱼优化一下。
这是老的被鲨鱼吃掉效果,是不是简陋的想哭呀。
CC哥看到造型里还有一个张嘴的造型,这不正好是吃鱼的动作嘛,赶紧利用以前的学习技巧,把这个改善一下。
这里面也有细节要处理:
1:鲨鱼有两种,一种是固定巡航的鲨鱼,沿着固定路径在走,那么如果碰到小鱼的时候是背面碰到的,那么鲨鱼要转身吃掉小鱼。
2:在吞吃小鱼的时候,是嘴部吞的,嘴部并不是鲨鱼的中心位置,所以程序处理要退20步。
3:要配音
过程控制
以前处理程序流畅,结束的时候就是一个停止全部脚本。
其实配合好消息命令,还有这些停止命令,就可以很有效的控制游戏的进程。CC哥就用这些命令进行游戏的进程控制,给小鱼附加上生命值,变成了一个完整的游戏。
这次的进阶课程,并不是要强调多高深的编程技巧,而是强调编程设计中如何对细节进行思考,一些小的技巧用在细节的处理上面,就会为程序增色不少。所以学习过程中,最重要的是活学活用,而不是天天追求难点。
·END·
跟我学Scratch编程不用花钱成为Scratch高手
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com