1、跳跃和自由落体
2、广播:广播消息、广播消息并等待、当接收到消息。
2.1 广播消息和广播消息并等待的区别。
3、实现超级马里奥
扩展:
1、小猫弹跳字母后,钻石会滑下来,并落到地上,小猫可以吃掉它。
2、加入得分变量。
3、加入敌人角色,小猫碰到敌人就减分。
============= 以下是课本内容 =============
本章我们要实现一个像《超级马里奥》中控制角色那样的操作。按下键盘上的“←”键,角色面向左边,然后向左移动;按下键盘上的“→”键,角色面向右边,然后向右移动;按下键盘上的空格键,角色会跳跃起来;当角色碰到物体时,会把物体中的金币顶出来。添加小猫角色和字母Z角色“Glow-Z”(这里我用字母Z表示《超级马里奥》中的砖块),选择背景为“Wall1”,调整角色大小,如图17-1所示。
图17-1 添加角色和背景
给小猫加入键盘控制的程序,按下键盘上的“→”键,小猫面向90方向(面向右),移动10步;按下键盘上的“←”键,小猫面向-90方向(面向左),移动10步,程序如图17-2所示。
图17-2 用键盘控制小猫角色的程序
我们发现当按下键盘上的“←”键时,小猫向左移动,但是头朝下,所以在“面向-90方向”指令模块前,还要将旋转方式设为左右翻转,程序如图17-3所示。
图17-3 设定小猫角色的旋转方式
用键盘控制小猫角色走到字母Z角色下面,调整字母Z的位置,让小猫头顶离字母Z的下边缘有一些距离,如图17-4所示。
图17-4 调整小猫和字母Z的位置
点击,小猫角色移动到舞台左端的初始位置(-203,-91)。接着再给小猫角色添加跳跃功能,当按下键盘上的空格键时,让小猫角色的y坐标增加40,程序如图17-5所示。
图17-5 给小猫角色添加跳跃功能的程序
当小猫角色跳起来的时候,为了有重力的效果,我们要让它一点点往下落。这个程序我们要放到“重复执行”指令模块当中,“重复执行”指令模块还是放在“当被点击”指令模块之后。这里重复执行“将y坐标增加-1”指令模块,不过需要一个条件,就是只有y坐标大于-91时才可以执行,程序如图17-6所示,而-91就可以认为是我们的地面坐标。
图17-6 小猫角色一点点下落的程序
当多次按下空格键时,我们会发现小猫角色有很好的“轻功”,这种“轻功”能让它在跳起的基础上接着往上跳,之所以会发生这种情况,是因为当小猫角色还没落地时,我们又按了空格键,此时小猫角色的y坐标又会增加40。要调整这个问题,就需要在按下空格键时判断一下小猫角色是不是在地面上(y坐标为91),程序如图17-7所示。当小猫角色移动到字母Z角色下面时,我们按下空格键,会发现小猫跳到了字母Z的后面,如图17-8所示,这是我们需要优化的地方。
图17-7 按下空格键时判断小猫角色位置的程序
图17-8 小猫跳到字母Z的后面了
调整之后,当按下空格键时除了要增加y坐标的值,还要判断小猫角色是否碰到了字母Z角色,如果碰到了,就要调整小猫角色的y坐标,让其不能超过字母Z角色的下边缘的y坐标值,同时我们广播一个消息让其他角色能够同步地执行一些操作,程序如图17-9所示。
图17-9 小猫碰到字母Z角色后调整位置并广播消息的程序
这里我们希望字母Z角色也有一个向上跳起来的效果,所以需要给它也增加一些程序。单击字母Z角色,添加一个“当接收到消息1”指令模块,然后在后面添加向上移动的效果以及回到原位的效果,这里我用的是“在1秒内滑动到x:0 y:0”指令模块。为了让效果更好,这里设定的时间为0.1秒,程序如图17-10所示。
图17-10 给字母Z角色添加向上移动的效果以及回到原位的效果
最后我们再添加顶出金币的效果。由于我在角色库中没有找到金币角色,所以这里添加了一个钻石角色“Crystal”代替。程序方面,依然是当接收到消息1之后进行处理。这里,在接收到消息之后,首先要将钻石移到最后面,目的是保证钻石在字母Z的后面。然后让钻石角色显示出来,并在0.3秒内滑行到x:20y:26,之后将角色隐藏,回到原位,程序如图17-11所示。“移到最前面”“显示”“隐藏”指令模块都在“外观”分类当中。至于具体的位置,需要通过测试来确定。程序运行时应该是图17-11所示的样子。
图17-11 钻石角色的程序
本节知识点:
1. 学会使用“广播”指令模块。
2. 通过y坐标判断角色是否在地面,增加或减少y坐标,实现角色跳跃和自由落体运动。
扩展练习:
1. 加入得分变量。
2. 加入敌人角色,小猫碰到敌人就减分。
发表评论 取消回复