本篇为Scratch复刻节奏天国游戏-星空漫步第二篇,上一篇文章:节奏天国小游戏:用Scratch复刻星空漫步(一)我们详细剖析了游戏制作前的准备工作。

今天我们深入游戏核心,完成游戏中的星空特效,请注意,这个特效不是简单的一闪一闪亮晶晶,而是跟随节拍变化的星空。先来看看效果:

img_v3_0214o_3dfe7626-ad52-4c3a-b7ef-0ab114a100eg.gif

星空的初始化

640 (2).png

背景里的星星在游戏开始时就会铺满画面,这个怎么实现呢?稍微学过一点Scratch的同学第一时间应该想到用重复执行+克隆实现,但是真正实现起来会发现,星星不是一下子全部渲染的,而是一颗颗画上去的,等到铺满画面,游戏已经进行了很长时间。

这是新手做游戏时最容易遇到的坑,解决方案其实很简单,使用自制积木去实现。因为我们要用到一个选项叫做:运行时不刷新屏幕。

640.png

勾选之后,只有在所有星星都克隆完毕,并且已经摆放好位置时才会一次性渲染到屏幕上,不仅实现了同步渲染,还提升了性能。

主角和星空的横轴移动

上一篇文章介绍过,类似这种简单的节奏游戏,人物都是相对屏幕不懂,让背景反向动起来,所以我们只需要让所有的星星在被克隆后,移动负数步,就能实现效果。

640 (1).png

首先我们要通过克隆在屏幕右侧不断生成星星。

640 (3).png

然后在克隆后,控制每一颗星星的移动,x坐标增加-1就是核心逻辑。那下面的计时器逻辑有什么用呢?大家可以推测一下,下一篇我们会详细讲解。

一闪一闪亮晶晶,满天都是小星星

跟着背景音乐闪烁的星星,是本文的重点。以往要制作星星闪耀的效果,只要切换每颗星星的造型就能实现,但是要让星星跟随节奏律动,需要加上很多变量约束。

640 (4).png

学过音乐的同学都应该知道,每首歌都有一个节拍。稍微懂行一点的都应该知道:音乐离不开节拍器,一种非常有节奏感的木鱼声(参考库乐队)。

音乐游戏里也需要节拍的概念,我们会在背景里初始化beat_interval的变量,这首歌一个拍子是0.46秒。

有了节拍的秒数,闪烁动画就简单了:

640 (5).png

除了闪烁,每颗星星在特定旋律下会进行形态切换。一首曲子里包含了主旋律副旋律,变调等等,每个节点,星星都可能会出现变化。总体来说,随着时间的推移,会越来越大。

这种实现就不能再依赖等待xx秒的积木了,需要有一个非常精准的时间轴来对齐,所以我们要用到:计时器!

640 (6).png

星星有五种状态,对应不同的时间启动变化。上面的代码是主控,克隆体本身的实现如下:

640 (7).png

大概的意思就是,进入第一阶段后(计时器大于5秒),从第26颗星开始,进行形态切换,切换时要遵循延时。如果没有延时,所有屏幕内的星星会同步变化,缺少了节奏感。

结语

以上就是带有节奏感星空实现的核心思路,后续我们将开始制作角色互动和卡点设计,感谢您的阅读和关注!希望本篇的星空能在七夕给大家带来一丝浪漫体验。

qrcode_for_gh_ce90e7966f04_258 (1).jpg

关注我们公众号,获取最新少儿编程资讯