7. 太空大战

7.1. 教程介绍

之前的课程中我们介绍了显示文本积木块,弹射物的使用和设置精灵的运动,这节课,我们来举一反三,利用学过的积木块来制作一个经典游戏-飞机大战。

../../../_images/course7.1.gif

7.2. 游戏机制

  1. 屏幕上方不断射出随机位置的飞机,我们称之为敌机,生命初始值3,初始得分0,如果被敌机攻击中了,则生命值减1,如果击中敌机,则得分加1。

  2. 我们玩游戏时,则需要在躲避敌机的同时去击落敌机,来获取更多的分数。

看到这个游戏机制,脑子里是不是立刻有了一些积木块的作用机制的回忆?

我们一起来编程一下!

7.3. 创建太空战机

首先,创建一架太空战机,并将太空战机的初始位置放置到屏幕中间的最下方。

../../../_images/course7.2.png

这个时候看到模拟器上只有太空战机的头出现在了屏幕的最下方中心上,这是为什么呢😕?

../../../_images/course7.3.png

因为我们设置的精灵位置,默认设置的是精灵中心的位置。如何将整个精灵都位于屏幕中呢?可以调用“精灵保持在屏幕中”积木块。

../../../_images/course7.4.png

刷新模拟器看看!

用按键来移动战机,并为战机设置一个合适的移动速度。

../../../_images/course7.5.png

7.4. 设置初始值

设置初始生命值为3和得分为0。

../../../_images/course7.6.png

7.5. 创建子弹

按下按键A发射子弹。这里的子弹是从太空战机里发出的,子弹也就是弹射物,子弹的发射是一个向上的运动。我们可以回忆下之前“下雨天”和“运动会”游戏项目中弹射物和精灵的运动的设置来设置子弹。

../../../_images/course7.7.png

7.6. 创建敌机

游戏中敌机的设定是按照一定的频率自上而下随机出现的,因此需要在“当游戏每隔()毫秒更新时”事件积木块中放置敌机精灵,并绘制敌机形象和设置敌机类型。

../../../_images/course7.8.png

模拟器中可以看到屏幕中间出现了敌机,下面我们来设置敌机的运动。

敌机自上而下随机出现,首先设置敌机的初始位置为屏幕最上方的随机位置。

../../../_images/course7.9.png

设置敌机的速度,VX为0,VY设置一个合适的向下速度。

../../../_images/course7.10.png

模拟器中可以看到敌机自上而下袭来,有太空大战内味了。

../../../_images/course7.11.gif

7.7. 自动销毁

敌机离开屏幕后并没有消失,而是堆积在了屏幕外,我们需要设置自动销毁,防止堆积过多造成占据内存,游戏卡顿的现象。

../../../_images/course7.12.png

TIPS:之后设置相似的精灵不断出现时,也要记得设置精灵摧毁哦!

游戏中的重叠事件有两个,一个是子弹射中敌机,得分加一;一个是敌机碰到战机,生命值减一。我们分别来设置一下!

7.8. 子弹与敌机重叠

设置子弹与敌机重叠事件,得分加一,销毁被击中的敌机。

Xtron/Xtron_Arcade/Xtron_Arcade_Games/images/course7.13.gif

拖取销毁精灵积木块到重叠事件中。

../../../_images/course7.14.png

我们发现被子弹击中的敌机并没有被销毁,销毁的敌机是最新一个在屏幕中出现的敌机,并不是被击中的敌机被销毁了。

这是因为我们游戏中有很多的子弹精灵和敌机精灵。在程序中创建的敌机精灵以及子弹精灵指的是当时创建的精灵,并不是我们重叠事件中要处理的精灵。

../../../_images/course7.15.gif

如何设置销毁被击中的敌机呢?

被击中的敌机,就是重叠事件中的敌机,在子弹与敌机重叠事件中子弹类型是Projectile(弹射物),敌机的类型是Enemy(敌人),那么重叠事件中代表击中敌机的子弹精灵是sprite,代表被子弹击中的敌机精灵是otherSprite。拖动事件中的otherSprite模块替换销毁“敌机”积木块中的“敌机”,并设置一个击毁的特效。

../../../_images/course7.16.png

7.9. 战机与敌机重叠

太空战机被敌机击中,生命值减1,并摧毁此敌机。

../../../_images/course7.17.png
width

300

当生命值为0时,游戏自动结束。

当然,为了提高游戏的完整度,我们可以在开始游戏时为游戏添加一个介绍玩法。为了提高游戏的有趣性,我们还可以增加一个倒计时积木块,和朋友们一起比赛,看谁的得分多!

../../../_images/course7.18.png

当然,同学们可以发挥自己的想象力,为太空大战增加更多好玩有趣的设置。

7.10. 问答考验

当精灵并不能全部在屏幕中显示,我们可以调用什么积木块来实现精灵在屏幕中?

解析:精灵-》特效->设置精灵保持在屏幕中

屏幕中不断出现精灵,为防止精灵过多造成游戏卡顿的现象,应该调用什么积木块?

解析:精灵-》特效->销毁精灵积木块

—————————————END———————————————

THANKS