第3课 在Scratch中移动角色——向城堡出发

 

课前准备

“向城堡出发”这个故事发生在小猫“抓抓”发现城堡,并且向城堡出发的路上。

图片

 

玩一玩:

单击此处可以查看本课的范例程序作品,看看小猫“抓抓”是如何向城堡出发的。

 

练一练:

根据前面课程学会的本领,打开在线版的Scratch 3.0 编程窗口。从“背景库”中添加如上图所示的舞台背景图片,再把小猫拖动摆放到舞台左下角。

 

一、认识Scratch中的舞台坐标

在Scratch中,要准确定位角色在舞台上的位置,需要坐标系统的帮忙。

在Scratch的舞台坐标系统中,一般把水平方向称为“x轴”,垂直方向称为“y轴”。“x轴”有480个像素点,“y轴”有360个像素点。其中,舞台的中心点是坐标系统的原点,它的坐标值是(0,0)。具体舞台坐标如下图所示。

图片

 

试一试:

移动鼠标试一试。Scratch舞台左上角的坐标是(     ,    ),右上角的坐标是(     ,    ),左下角的坐标是(     ,    ),右下角的坐标是(     ,    )。

 

二、让小猫走向城堡

(一)认识指令

让小猫从舞台的左下角走到城堡门口,需要用到“运动”类别中的 图片图片 这两个指令。

 

试一试:

  1. 找到这两个指令,想一想,这两个指令的参数作用是什么?
  2. 分别在这两个指令中输入参数,然后单击指令运行,比较它们之间的区别。
  3. 先把小猫拖动到舞台的不同位置,然后观察这两个指令中的参数变化;同时与舞台右下角状态栏中的坐标值比较一下,想一想它们之间有什么关系?

 

(二)编写程序

要让小猫沿着舞台上的小路走到城堡门口,可以按照以下步骤编写脚本:

  1. 将小猫拖动到舞台左下角,比如它的坐标位置大致是(-190,-120)。
  2. 拖动 图片 指令到脚本区,由于小猫已经定位到舞台左下角,因此这个指令的位置参数已经自动更新。不管小猫在哪个位置,只要执行这个指令,就会快速移动到参数指定的位置。
  3. 将小猫再拖到第二个位置,比如坐标大致为(-70,-60)的位置。
  4. 小猫从舞台左下角起始位置到第二个位置应该有移动的过程,因此最合适使用的是 图片 指令。这个指令的位置参数也已经更新,因此不需要修改参数,直接拖动它到脚本区,与前一个指令组合。
  5. 按照以上步骤,依次先将小猫拖动到后续的位置,Scratch自动更新指令的位置参数后,再拖动 图片 指令到脚本区,与前一个指令组合,一直将小猫移到城堡门口为止(如下图所示)。

图片

 

三、让小猫越走越小

小猫在走向城堡的过程中,按照一般的视觉规律,应该是越走越小。

要改变角色的大小,可以使用“外观”类别中的 图片 指令。由于小猫是越走越小的,因此指令中的参数应该是负数,比如输入“-15”,表示缩小15%。具体可以按以下步骤编写程序:

  1. 图片 指令拖动到 图片 指令下方,修改 图片 指令中的参数为“-15”。
  2. 依次在每个 图片 指令下方添加 图片 指令,并修改参数为“-15”。

具体程序代码如下图所示:

图片

 

试一试:

  1. 尝试多运行几次脚本,你发现问题了吗? 如何解决这个问题呢?
  2. 要解决这个问题,可以使用 图片 指令,你知道这个指令的作用吗?它应该添加在程序的哪个位置?

 

四、让小猫产生走动的效果

通过以上操作,小猫可以一边走向城堡、一边改变大小。但美中不足的是,它走路的姿势比较僵硬。如果能够在移动的时候有动态的走动效果,那就非常完美了。

 

(一)编写程序让小猫动起来

其实,在前面第2课介绍过,在小猫的“造型”选项卡中可以看到,这个角色默认有两个造型,这两个造型不断重复显示,就可以产生小猫走动的动态效果。具体可以按以下步骤编写程序:

  1. 单击“脚本”选项卡中的“控制”类别,将 图片 指令拖动到脚本区。
  2. 再单击“脚本”选项卡中的“外观”类别,将 图片 指令拖动到 图片 指令里面,将这两个指令组合在一起。
  3. 图片 指令拖动到 图片 指令下方,使这两个指令组合在一起;然后修改参数,将等待的时间修改为“0.1”秒。

具体程序代码如下图所示:

图片

 

  1. 单击这段脚本的第一个指令,小猫的两个造型会自动重复切换,从而产生小猫走动的动态效果。

 

(二)让小猫一边走、一边切换造型

通过以上的操作,小猫造型的切换和走动是两段程序脚本,需要分别单击这两段脚本的第一个指令执行,非常不方便。

其实可以使用第2课学过的“事件”类别中的 图片 指令,通过单击舞台左上角的 图片 同时运行这两段程序脚本,让小猫一边走、一边能够自动切换造型。

完整的程序代码如下图所示:

图片

 

想一想:

计算机程序编写的时候要注重优化,也就是用尽量少的指令实现所需要的功能。你能够对如上图所示的程序脚本进一步优化,在达成同样效果的前提下,减少指令数量吗?

 

拓展思考

怎样才能使小猫“抓抓”向城堡走去的动画效果更自然、更顺畅?