编程大师的新高度:跳跃
在Scratch游戏编程课的第一讲(2月12日刊)中,我们介绍了如何用键盘控制角色的上下左右移动,但在一个平台类游戏里,我们还要让角色跳起来!
1.设定重力
Scratch 舞台本是没有重力概念的。如果我们不编程,角色可以停留在任何位置。当我们想模拟现实世界时,首先就要把重力加进去:除了舞台的底部,角色在其他任何高度都会下落,还要落得越来越快,就像真实世界一样。
我们使用大循环指令,首先判断角色的 Y 轴坐标是否大于 -165(本例子中舞台底部的位置),也即判断角色是不是“在空中”——如果是,就把变量“Y 速度”减2,把角色的 Y 坐标向下移动“Y 速度”值;如果不是,说明角色已经“着地”了,就把 Y 坐标值锁定在 -165,角色就会贴在地面上。
2.设定平台
在众多平台类游戏里,角色都是在一个平台上奔跑跳跃的。我们可以把这些平台的角色命名为“墙头”。
稍微好玩一点的游戏,平台不只有一层,而是有好几层。此时,前面所说的坐标定位的方法就不好用了(角色处在某个平台的高度,并不意味着它一定在那个平台上)。
为此,我们要用“碰到”侦测模块。如果没碰到,说明还在空中的下落状态,我们让变量“Y 速度”不断增大(负方向);如果碰到,说明角色落在了平台上,指令就把变量“Y 速度”锁定为 0 ,角色就又趴着不动啦。
3.蹬地跳
我们已经能在平台上表现重力了。总算要开始跳了!
游戏中,我们习惯用空格键来控制跳跃:我们一敲空格键,就把“Y 速度”设定为一个正向的比较大的数,再让 Y 坐标值增加“Y 速度”值,就这么简单!
不过这样的指令里有一个问题:你要是不停按空格,角色就不下来了!没事儿,加一个“判断”命令就可以:它判断角色有没有接触平台。如果有,则跳跃有效;如果没有(空中),就过滤掉这次敲击。
4.空中跳
很多游戏里都有空中再跳一次的设定(二段跳)!这个当然可以有——我们要判断角色在空中跳过没有,如果跳过,就不能再跳了。
首先建立一个新的变量:“2跳”,它有两个值:true 和 false(分别记录跳和没跳)。当我们按下空格键,指令先判断角色有没有接触平台,如果有就触发跳跃,如果没有(在空中),指令还要判断“2跳”有没有发生。如果没发生(false),就把跳跃的代码再执行一遍,同时把“2跳”设成“true”(跳过)。当然,在重力的代码部分,我们要加一行:如果碰到了平台,把“2跳”重新设置为“false”。