💡返回主题
接下来,我们为游戏添加一个目标:击败 50 个敌人后,显示游戏胜利的提示,玩家赢得游戏后,也会有庆祝仪式感。
- 我们回到之前编写的“字幕”角色,这个角色之前被用于显示失败提示;现在我们继续在这里写胜利提示:
我们为它添加胜利提示造型:
2.然后,我们在这个角色编写胜利判断的代码:
当得分达到 50,游戏就会胜利。
和前面的“血量=0”的判断一样,最好不要用“得分=50”这样的写法,因为可能出现,两个怪物同时死亡,导致得分直接从 49 变化到 51,而跳过了“得分=50”的条件。
3.但是,上面的写法仍然有问题。
之前,我们将得分归 0 的代码写在了玩家中。
可能存在这种情况:上一次游戏时,分数达到 50,玩家胜利;当点击绿旗重新开始游戏,可能会先执行判断得分>49,游戏胜利的代码(而此时得分还是上一局的 50 分),之后才设置了得分归0,导致一进游戏就直接胜利。
解决办法是,在判断胜利之前,加一个等待 0 秒:
之前介绍过,等待 0 秒并不是不等待,而是会等待一帧(约 0.033 秒)
这样,点击绿旗后,判断“得分>49”会在等待一帧后执行,而先执行得分归 0 的代码。 还有一个办法,就是将玩家中的得分归 0 代码移动到此处👇:
类似这样的问题,还有下面的血量问题:
- 如下,有两个并行的代码。如果血量只在左边的代码里初始化为 3,那么可能存在先执行了右边的代码,此时血量还未设为 3,导致右侧的代码直接跳出循环,没有被执行;
• 解决办法,就是在右侧的代码前面加“等待 0 秒”:
4.我们之前写了失败提示的弹出代码,我们可以把这个代码复制,改成胜利提示弹出的代码:
• 然后,我们给玩家和玩家武器角色添加下面的代码:游戏胜利后停止动作。
• 给所有的 4 种敌人增加下面的代码:玩家胜利后,所有在场的敌人直接原地去世:
5. 最后,我们删除四个敌人的克隆自己的脚本。毕竟分散在四个角色里不好管理,最好有一个角色统一控制敌人的放置。
新建一个角色,命名为“出兵管理”,负责专门放置敌人。
然后,为这个角色添加代码:
- 控制 4 种敌人的生成间隔,以及最早出现时间(例如铁桶喵是游戏 5 秒后才生成)
- 当玩家胜利,或玩家失败,停止敌人的生成。
你可以测试一下,当分数达到 50,是否能正确弹出胜利信息。(为了方便测试,你可以先把胜利条件改小一点,比如击杀 10 个敌人后胜利) 最终效果:
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=STG101/Arkos/Lec6/04&type=comment"
title="{射击6-添加游戏胜利目标}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>
本页索引