Scratch

状课网-少儿编程网课专业平台

Scratch 跟我学scratch编程:如何正确实现背景的滚动

发布时间:2021-11-26 11:01:07 浏览 0

  ———— / 作品赏析 / ————

  从这次开始,CC哥会每期都挑一个做的不错的scratch的小作品,展示给大家,大家可以通过观察别人的设计来观察这些作品的细节,提升自己作品的设计和技巧。今天给大家看一个装冰激凌的小游戏,大家欣赏一下。

跟我学scratch编程:如何正确实现背景的滚动

  这个小游戏并不难,就是用一个空格键操作,按住空格键不放,冰激凌就变大,松手,冰激凌就落下来,每次放的冰激凌球必须比上一个小,否则冰激凌塔就会倒下来,大家自己也可以做做试试。

  ———— / 正式开讲 / ————

  当我们玩赛车游戏,跑酷游戏,飞机大战也好,特别是RPG的游戏的时候,都会发现背景地形,或者地图,随着角色的移动,在向后滚动,也就是通过背景向后滑过,来显示角色在运动。是不是马上联想到了电影里女猪脚策马狂奔的片段

跟我学scratch编程:如何正确实现背景的滚动

  今天CC哥就来跟大家讲一下背景滚动在Scratch里如何实现的。其实很简单,就是把背景做成几个角色,拼接在一起,然后不断上下或左右循环滚动就行了。

跟我学scratch编程:如何正确实现背景的滚动

  是不是一点也不复杂,角色1的位置为0,0,也就是Y轴起始点为0,角色2的位置为0,360,也就是Y轴起始点为360。然后两个角色同步向下运动,看上去就象是背景在滑动了。要实现这个代码不难。

  —

  —

跟我学scratch编程:如何正确实现背景的滚动

  小技巧,作为背景,两个角色的上下拼接一定要严丝合缝,这里有个小技巧,你做好角色1后复制一个角色2,然后用右上角的上下翻转按钮就可以得到严丝合缝的角色2。(中间的赛道一定是透明的,否则将来做小车的碰撞测试时就会出问题。)

  —

  —

  让我们看一段程序,这是很多老师都会这样教这样做:

  ———— / 角色1代码 / ————

跟我学scratch编程:如何正确实现背景的滚动

  ———— / 角色2代码 / ————

跟我学scratch编程:如何正确实现背景的滚动

  ———— / 程序执行效果 / ————

跟我学scratch编程:如何正确实现背景的滚动

  运行起来看着也没问题,请大家自动忽视CC哥的美工能力。

  ———— /问题分析 / ————

  但是CC哥觉得有问题:

第一个问题

  是,角色1和角色2分别处在不同的两个循环里,也就是两个循环是独立的,那么问题来了,对于赛道速度这个变量,角色1的循环里,每次循环都增加-5,角色2的循环里每次也增加-5。那相当于不是一次挪动了10步?明显把赛道运动速度加快了1倍。

第二个问题

  是,既然是两个独立的循环,如何保证两个循环能保持同步呢?尤其是如果把赛车在加上,把障碍物在加上,你会做出无数个独立循环,那程序在这么多循环里来回跳转,不但效率低,还很有可能因为每个循环中代码的长度不同,最后发生不能同步的情况。

  所以说,大家看到的这种做法虽然很简单,但在设计这种需要多角色同步的游戏,是错误的。

跟我学scratch编程:如何正确实现背景的滚动

  ———— /正确做法 / ————

  概念详解

  广播...与广播...并等待的区别:广播是给所有的角色发布一条消息,其他角色接受到消息后触发一段代码。

跟我学scratch编程:如何正确实现背景的滚动

  广播...并等待,是发布消息后,并等所有角色接受到消息并执行完对应的代码后,才会执行下一条命令。虽然两个都会用来做多线程程序的同步作用,但是广播...是同步触发事件,而广播...并等待多用来多角色的连续操作的同步上,比如大家一起先去吃饭,吃完饭一起去看电影,看完电影一起去喝奶茶,喝完奶茶一起回家。

  所正确的做法就是用广播并等待命令来统一所有角色的行动:

  第一步:大家准备好-所有的角色初始化。

  第二步:统一计算移动到哪个位置。

  第三布:所有角色统一行动一步。

  然后重复2~3步骤。

  ———— / 循环控制角色代码 / ————

跟我学scratch编程:如何正确实现背景的滚动

  主循环

跟我学scratch编程:如何正确实现背景的滚动

  设置初始位置和移动速度

跟我学scratch编程:如何正确实现背景的滚动

  计算要移动到的位置

  以上部分是循环控制角色的代码,我们创建一个透明的角色作为一个程序运行的整体控制。对于一些全局变量的运算,都可以放在这个角色里,便于阅读和管理。

  ———— / 角色1的代码 / ————

跟我学scratch编程:如何正确实现背景的滚动

  角色1收到消息后初始化自己和移动到统一算好的位置

  ———— / 角色2的代码 / ————

跟我学scratch编程:如何正确实现背景的滚动

  角色2收到移动消息后根据统一计算出来的位置走到自己的位置

  ———— / 程序执行效果 / ————

跟我学scratch编程:如何正确实现背景的滚动

  滚动的也很完美

  ———— /程序分析 / ————

  大家看到没,这样做的好处是什么?

  1:整个程序只有一个循环控制,计算机的开销小得多。

  2:所有的角色完美的执行同步操作。

  3:代码清晰易懂。

跟我学scratch编程:如何正确实现背景的滚动

  掌握了这种方法,大家还可以把赛车做进去,通过方向键来控制赛车,再加上之前的学过的碰撞,碰到路边后的汽车转向和减速操作,再把计数器加上等等,就可以比赛谁在最短的时间内跑的最远,一个完美的赛车游戏就做成了。

  文章来源:跟我学scratch编程

本文链接:https://www.ascratch.com/news/17620.html

上一篇:跟我学scratch编程:递归的应用-雪花曲线 下一篇:返回列表