scratch如何制作游戏:角色碰到边界直接消失反复卡逻辑

scratch如何制作游戏:角色碰到边界直接消失反复卡逻辑

最开始想试着scratch如何制作游戏,脑子里只想着拖几个角色出来,随便拼点积木,以为半天就能做出个简单的闯关小游戏。打开网页端编辑器,先挑了个小怪兽当玩家角色,背景选了一片草地,拖拽移动积木,按左右键控制角色来回跑,这一步倒是很顺,没卡太久。

后面就出问题了。想着加个边界判定,角色碰到舞台边缘的时候直接消失,等几秒再重新出现。把碰到边缘就隐藏的积木拖进去,运行测试,角色一碰到边,确实不见了,但重新生成的位置完全乱掉,有时候直接卡在屏幕侧边,一直闪,点停止都要等半天。反复拖拽积木块,一会把等待积木挪前面,一会放到隐藏后面,来回调换顺序,分不清哪段代码先执行。

旁边同学路过瞟了一眼,说我重复触发的条件写的不对,不要把全部代码堆在同一个绿旗下面。当时没听懂他说的意思,觉得代码都写上了,怎么会不分先后。删了代码重新搭,换了一种写法,把生成角色的脚本单独拉一块,点绿旗时先显示角色,定位到起点,再持续检测有没有碰到舞台边缘。

测试的时候,新的状况冒出来。角色移动速度调的太快,按键一按直接冲出边界,判定模块有时候捕捉不到碰撞,角色就卡在屏幕外面,再也不会回来。试着调低移动步数,每次按键只移动两步,情况稍微好转,但偶尔还是会漏掉判定。找不到别的办法,就不停的点绿旗重启,一次一次试,耗了差不多一个下午。

还想着再加个收集道具的机制,放几个小星星在舞台里,碰到星星就加分。拖了变量积木新建分数,把加分代码绑在星星角色上。运行游戏,碰到星星分数正常上涨,可星星不会消失,一路走过去分数疯狂往上跳,一瞬间数字直接飙到几百。

一开始以为是变量设置出错,来回修改变量初始值,每次点绿旗重置分数,可重复碰撞加分这个问题还是在。后来才反应过来,星星角色没有在碰撞之后隐藏自己,循环会不停触发加分积木,只要角色贴在星星上,分数就会持续增加。在碰到玩家角色的分支里补上隐藏积木,再加一段等待几秒之后重新显示的代码,这下才稳住加分逻辑。

所有积木拼完之后,完整跑一遍游戏。操控小怪兽左右移动,捡星星涨分数,碰到屏幕边界角色消失然后重新回到起点。玩的时候又发现,按键长按,角色移动断断续续,不是顺滑持续跑动。不知道在哪调整响应,就一直按着方向键来回试,一会松开一会按下,断断续续的移动手感,玩起来很别扭。

那天坐在电脑前,来回拖拽积木,删了又重建,好几次整个脚本直接清空从头搭建。代码块堆得密密麻麻,舞台上角色一堆,看着乱糟糟的,分不清哪段脚本对应哪个角色。中途还不小心误删了整个背景,又重新从素材库里找图片,耽误不少时间。

做到最后,游戏能跑通,但有不少小毛病。有时候角色重生的位置会和星星重叠,刚刷新出来就直接拿到分数;长按方向键,移动依旧不是很流畅。也没有加失败条件,分数再高也没有结束界面,玩到什么时候都不会停。

关掉编辑器的时候天已经暗了。折腾这么久,才发现scratch做游戏不是简单把积木拼在一起就行,各个脚本的执行顺序,角色之间互相触发的条件,稍微错开一点,整个游戏逻辑就乱掉。只是那会已经不想再继续调整剩下的问题了。