你肯定玩过《愤怒的小鸟》,这是一款人人都喜欢的小游戏,它没有年龄、性别限制,游戏的故事也是相当有趣,玩家通过操作一个弹弓来将一些没有翅膀的小鸟发送到对面,破坏一些构建物以及偷鸡蛋的猪,不同的小鸟还有不同的特殊技能,终极目标就是在规定次数内打倒所有的猪,游戏中那种奇妙的感觉令人感到欢乐。在玩过游戏之后,不知道有没有同学和我有一样的想法,是否可以用Scratch模仿出《愤怒的小鸟》呢?今天小陈老师就和大家分享一下我是如何用Scratch模仿《愤怒的小鸟》游戏的。
《愤怒的小鸟》所需要的素材包已经上传到百度网盘了,素材包中包含了红鸟和猪猪的角色图片、游戏的背景、积分、弹弓的部件和烟雾等。将所有素材导入Scratch角色库,积分作为猪猪的第二个造型(图1)。
将各角色摆放在规划好的位置,初始状态下,弹弓和小鸟在左边,小鸟的图层在“弹弓右”的上面一层、“弹弓左”最上层。猪猪摆放到舞台右边要与弹弓有一定的距离,以便游戏运行后小鸟可以发射出去。小陳老师为了方便演示只摆放了一只猪猪,大家学会方法后,可以以此类推(图2)。
首先我们需要确定小鸟的位置,新建两个变量“初始X坐标”和“初始Y坐标”代表着游戏开始后小鸟的默认位置,这个位置在弹弓中间。
然后我们要考虑游戏的运行过程,小鸟飞行路线是一条抛物线。由于小鸟是玩家控制的,随着初始位置不同,角度和弹弓的拉伸长度与抛物线之间的关系很难用数学的公式完美表示出来。我们简化了变量,只用两个变量“X速度”和“Y速度”控制小鸟的飞行。
当我们准备发射小鸟时,按下鼠标拖住小鸟,向后拖动一段距离。这时“X速度”设置为小鸟“初始X坐标”减去小鸟当前位置的“X坐标”除以4。“Y速度”设置为小鸟“初始Y坐标”减去小鸟当前位置的“Y坐标”除以4。这里除4的目的是不让小鸟飞得太快太远,让玩家难以击中目标(图3)。
以上部分便是小鸟发射前的场景,当松开鼠标后,在弹弓左边小鸟速度增加,在弹弓右边速度开始降低。为了表现飞行的轨迹是一条抛物线,当小鸟的X速度大于0后也就是释放鼠标弹射出去后超过弹弓时,Y速度由原来的增加改成减小,这样便会形成抛物线的效果(图4)。
当飞出去的小鸟击中猪猪时,广播触发“击中猪猪”效果,猪猪由原来的造型变换成1000分。如果飞出去的小鸟碰到舞台边缘或者碰到地面后,自动消失,消失时我利用克隆加造型完成了一个烟雾的特效,看起来还是挺逼真的(图5)。
讲到这里不知道同学们有没有忘记,我们漏了一个点,弹弓的皮筋在哪里呢?其实皮筋部分需要我们通过画笔工具描绘出来,皮筋的拉升长度和小鸟的移动位置有直接关系,拉伸后的小鸟正好处于弹弓皮兜的中心位置,而皮筋的两端起点就是小鸟默认初始位置的左右两边,也就是弹弓左右两根棍子上。只要设置好画笔的颜色和粗细,完成相应的代码,不就完成了弹弓皮筋的效果了吗(图6)?
《愤怒的小鸟》确实是一款不错的小游戏,赶紧拉上你的小伙伴一起把游戏做得更加丰富一点吧,加油!