杰瑞科技汇

Scratch射击游戏怎么制作?新手也能学吗?

  • 玩家控制一艘飞船,可以左右移动和发射子弹。
  • 从屏幕上方不断有敌人(UFO)出现并向下移动。
  • 玩家用子弹击中敌人,敌人消失,玩家得分。
  • 如果敌人碰到玩家,游戏结束。

第一步:准备工作 - 角色和背景

打开Scratch(scratch.mit.edu)。

Scratch射击游戏怎么制作?新手也能学吗?-图1
(图片来源网络,侵删)

创建背景

  1. 在右下角的“舞台”区域,点击“背景”选项卡。
  2. 点击“选择一个背景”,在“户外”分类中选择 space (星空)。
  3. 为了让背景看起来更酷,我们可以加上一些星星,点击“绘制”,选择一个黑色,然后用白色的小点画一些星星,完成后点击“确定”。

添加玩家角色

  1. 点击左上角的“选择一个角色”,在“Things”分类中选择 rocket (火箭)。
  2. 将这个角色重命名为“玩家”。

添加子弹角色

  1. 再次点击“选择一个角色”,在“Things”分类中选择 yarn (毛线球),它看起来像一个小球,很适合当子弹。
  2. 将这个角色重命名为“子弹”。
  3. 重要: 点击“造型”选项卡,删除第二个造型,只保留一个。
  4. 调整子弹的大小,让它看起来更像一颗能量球,在“代码”选项卡旁边,点击“造型”,然后使用“放大/缩小”工具将其缩小一些。

添加敌人角色

  1. 点击“选择一个角色”,在“Things”分类中选择 ufo (UFO)。
  2. 将这个角色重命名为“敌人”。

你的角色列表应该看起来像这样:


第二步:玩家飞船的控制

我们要让玩家用左右方向键控制飞船移动。

  1. 选择“玩家”角色,点击“代码”选项卡。
  2. 添加以下代码块:

代码解释:

  • 当 绿旗 被点击:程序开始运行的触发点。
  • 重复执行:让里面的代码块一直循环执行。
  • <键 左箭头键按下?> 那么:检测玩家是否按下了左方向键。
  • 将 x 坐标 增加 (-5):如果按下了左键,就将飞船的x坐标向左移动5个步长。
  • <键 右箭头键按下?> 那么:检测玩家是否按下了右方向键。
  • 将 x 坐标 增加 (5):如果按下了右键,就将飞船的x坐标向右移动5个步长。

测试一下: 点击绿旗,用键盘的左右方向键试试看,你的飞船是不是可以左右移动了?

Scratch射击游戏怎么制作?新手也能学吗?-图2
(图片来源网络,侵删)

第三步:发射子弹

我们让玩家按下空格键来发射子弹。

  1. 继续为“玩家”角色添加代码。
  2. 添加以下代码块:

代码解释:

  • 当 <键 空格键按下?>:这是一个“事件”触发器,当空格键被按下时,执行下面的代码,注意,我们把它放在了重复执行外面,这样每次按下只会发射一颗子弹,而不是连续发射。
  • 克隆自己:这是Scratch的“克隆体”功能,非常重要!它会创建一个和“子弹”角色一模一样的新角色(克隆体),而原始的“子弹”角色会隐藏起来。
  • 隐藏:隐藏原始的子弹角色,这样舞台上就只显示克隆出来的子弹。

第四步:子弹的运动

子弹被发射后,需要向上飞出屏幕,然后消失。

  1. 选择“子弹”角色,点击“代码”选项卡。
  2. 添加以下代码块:

代码解释:

Scratch射击游戏怎么制作?新手也能学吗?-图3
(图片来源网络,侵删)
  • 当 作为克隆体启动时:这个代码块只会为克隆体(也就是每次发射的子弹)运行。
  • 显示:让克隆出来的子弹显示出来。
  • 重复执行直到 <碰到 边缘>:让子弹一直向上移动,直到它碰到屏幕的边缘。
  • 将 y 坐标 增加 (-10):将子弹的y坐标向上移动10个步长(在Scratch中,y轴向下是增加,向上是减少)。
  • 删除此克隆体:当子弹碰到边缘后,把它删除,避免占用内存。

测试一下: 点击绿旗,按空格键,看看子弹是不是从飞船的位置发射,然后向上飞出屏幕消失了?


第五步:敌人的生成和移动

我们需要敌人不断从屏幕上方随机位置出现并向下移动。

  1. 选择“敌人”角色,点击“代码”选项卡。
  2. 添加以下代码块:

代码解释:

  • 当 绿旗 被点击:开始游戏时执行。
  • 隐藏:一开始让敌人角色隐藏,因为我们是用克隆体来显示敌人。
  • 重复执行:不断生成敌人。
  • 等待 (1) 秒:控制敌人出现的速度,数值越小,出现越快。
  • 移到 x: (随机数在 (1) 到 (480) 之间) y: (180):在屏幕上方随机一个x坐标,y坐标固定为180(屏幕顶部),让敌人出现。
  • 显示:显示这个敌人。
  • 克隆自己:创建一个敌人的克隆体。

测试一下: 点击绿旗,看看是不是每隔一秒,就会在屏幕顶部随机位置出现一个UFO?

  1. 为敌人的克隆体添加移动代码。

    在“敌人”角色的代码块下方,添加以下代码:

代码解释:

  • 当 作为克隆体启动时:只对敌人克隆体生效。
  • 重复执行直到 <碰到 玩家>:让敌人一直向下移动,直到它碰到“玩家”角色。
  • 将 y 坐标 增加 (2):敌人向下移动2个步长。
  • <碰到 边缘> 那么:如果敌人还没碰到玩家就掉到了屏幕底部,也要把它删除。
  • 删除此克隆体:删除掉出屏幕的敌人克隆体。

测试一下: 点击绿旗,看看UFO是不是会从上往下掉,直到碰到玩家或掉出屏幕?


第六步:碰撞检测 - 射击和计分

这是游戏的核心!我们要检测子弹是否击中了敌人。

  1. 选择“子弹”角色,在它的代码块中添加碰撞检测。
  2. 修改重复执行直到 <碰到 边缘>部分,在里面加入一个判断:

代码解释:

  • <碰到 敌人?> 那么:在子弹向上飞的过程中,不断检测它是否碰到了“敌人”角色。
  • 广播 [击中]:如果碰到了,就发送一个名为“击中”的广播信号,广播就像一个对全世界的喊话,所有角色都能听到。
  • 停止 [该角色的全部脚本]:子弹击中敌人后,就停止它的所有脚本(包括移动和删除)。
  • 删除此克隆体:然后删除子弹本身。

测试一下: 暂时还不能完全测试,因为敌人角色还没准备好接收“击中”信号。


第七步:响应击中信号 - 敌人消失和计分

让“敌人”角色听到“击中”信号后消失,并让“玩家”角色加分。

  1. 选择“敌人”角色,添加代码来响应广播。
    • 在最上面添加一个当接收到 [击中]的事件块。

代码解释:

  • 当接收到 [击中]:当“子弹”角色广播“击中”信号时,这个代码块就会被触发。
  • 删除此克隆体:触发后,删除当前这个敌人克隆体。
  1. 创建计分变量。

    • 点击左上角的“变量”选项卡。
    • 点击“新建一个变量”,命名为“分数”。
    • 选择“适用于所有角色”,这样所有角色都可以修改这个变量。
    • 将变量“分数”拖到舞台上,方便我们查看。
  2. 修改“玩家”角色的代码,让它能加分。

    • 选择“玩家”角色。
    • 当接收到 [击中]的代码块下面,添加:

代码解释:

  • 当接收到 [击中]:玩家角色也监听“击中”信号。
  • 将 [分数] 增加 (1):每当有敌人被击中,分数就加1。

测试一下: 点击绿旗,发射子弹击中UFO,看看分数是不是增加了?


第八步:游戏结束逻辑

如果敌人碰到了玩家,游戏就结束了。

  1. 选择“敌人”角色,修改它的移动代码。
    • 重复执行直到 <碰到 玩家>的循环里,添加一个判断。

代码解释:

  • <碰到 玩家?> 那么:在敌人下落的过程中,如果碰到了玩家。
  • 广播 [游戏结束]:发送一个“游戏结束”的广播信号。
  • 停止 [该角色的全部脚本]:停止这个敌人克隆体的脚本。
  • 删除此克隆体:删除这个敌人。
  1. 为“玩家”角色添加游戏结束逻辑。
    • 选择“玩家”角色。
    • 添加以下代码:

代码解释:

  • 当接收到 [游戏结束]:监听“游戏结束”信号。
  • 说 [游戏结束!] (2) 秒:在屏幕上显示“游戏结束!”字样,持续2秒。
  • 停止 [全部脚本]:停止所有角色的所有脚本,游戏结束。
  1. (可选) 添加重新开始功能。
    • 当 绿旗 被点击的代码块最下面,添加:

代码解释:

  • 将 [分数] 设为 (0):每次开始新游戏时,分数清零。

最终成果与扩展

恭喜!你已经完成了一个完整的Scratch射击游戏!

最终效果:

  • 点击绿旗,游戏开始。
  • 用左右方向键移动飞船。
  • 按空格键发射子弹。
  • 击中UFO得1分。
  • 被UFO撞到,游戏结束。

你可以尝试扩展这个游戏,让它变得更有趣:

  1. 增加生命值: 创建一个“生命值”变量,玩家被撞到一次不是直接结束,而是减少一条生命,用完3条生命后才结束。
  2. 多种敌人: 创建不同的敌人角色,它们有不同的速度和分值。
  3. 音效和背景音乐: 从“声音”库中添加音效,比如射击声、爆炸声和背景音乐。
  4. Boss战: 创建一个巨大的Boss,需要多次击中才能消灭。
  5. 道具系统: 添加掉落的道具,双倍火力”、“护盾”等。

希望这个教程对你有帮助!享受在Scratch中创造的乐趣吧!

分享:
扫描分享到社交APP
上一篇
下一篇