今天,我们将对这个敌人做更多的事情,让它移动得更多,更接近于实际的游戏体验。我们还会让它发射子弹。
敌人行为设计
- 初步设想:首先,我们要明确,我们现在做的都是初步的工作,只是创造一个敌人来测试游戏中的元素和可能遇到的问题。
- 多行为敌人:我们可能想要有多个敌人,每个敌人都有不同的行为。为此,我们可以为敌人设置一个"大脑"变量,用来标识它的行为类型。
- 年龄变量:此外,我还想为敌人增加一个"年龄"属性,用H来表示。这样,我们可以根据敌人的年龄来决定它的行为。
实现敌人动画
- 动画实现:在实现敌人的动画时,我们遇到了一些问题,比如如何优雅地处理敌人的移动和停留。
- 代码优化:我们意识到,游戏中有很多相似的系统可以合并,以提高代码的重用性。
- 调试过程:在调试过程中,我们发现了一些问题,比如敌人的移动速度、停留时间等,都需要不断调整以达到最佳效果。

子弹系统
- 子弹创建:接下来,我们为敌人创建了子弹系统。首先,我们需要创建一个子弹的精灵(sprite)。
- 代码重用:为了代码的重用性,我们尝试将发射子弹的代码抽象出来,使其既可以用于敌人子弹,也可以用于玩家子弹。
敌人生成与销毁
-
敌人生成:为了让游戏更加有趣,我们决定让敌人不断生成。为此,我们编写了一个函数来定时生成新的敌人。
-
随机生成:为了让游戏更具挑战性,我们尝试让敌人在随机位置生成。然而,这样做也带来了一些问题,比如敌人可能会重叠或出现在不合逻辑的位置。
-
敌人销毁:当敌人飞出屏幕或达到某种条件时,我们需要将其销毁。为此,我们编写了相应的逻辑来处理敌人的销毁。
function dobuls(arr)
for s in all(arr) do
s.x+=s.sx
s.y+=s.sy
s.si+=0.5if flr(s.si)>#s.sani then s.si=1 end if s.y<-16 or s.y>130 then del(arr,s) end
end
end