太空入侵者基础恶化



在太空入侵者中,当外星子弹击中您的防御基础时,它们会缓慢恶化。有人可以解释游戏如何做到吗?

我猜他们不是在基础上使用图像,也没有边界矩形碰撞检测?

在Wayback机器中拨号。原始的太空入侵者使用了一个简单的刻度掩码来增加基地的伤害。这些图像只是基本的1位图像,从内存1个字节宽,8个字节向下(8 x 8像素)

要施加损坏,有一个掩模[0B11111001,0B11110000],该蒙版向左移动(将携带放置在最低位),然后用基本字节掩盖。pixelByte &= maskByte。然后切出伤害模式。如果剩下任何像素并在炸弹的路径中,炸弹将继续撞到基地。

还使用了击中掩模的基本。BOMBMASK = 0B00000011向左移动(或可以被查找)以匹配X POS。要查看是否有击中您的命中,如果结果不是零,则用基本位 pixelByte & bombMask掩盖了基础。

这全都写在集会上,而这是一个编程的大师。我仍然记得在想:"他们如何这么快地移动这么多像素。"

今天,您可以使用相同的方法,但是您很少看到这样的精力详细介绍了。我发现现代游戏倾向于进行捷径,只是有很多图像来显示损坏。

因此,只需根据命中框或圆圈进行损坏计数即可显示图像,以说明损害状态,健康,轻微伤害,重大伤害并破坏。易于实现!对游戏有好处?好吧,这是另一回事。

我不确定它最初是如何完成的,但是使它起作用的一种方法是将每个障碍物组成由许多单独的块组成,每个障碍都有自己的健康状况价值。如果一个块获得足够的命中,请删除它。

这应该使障碍逐渐恶化。

编辑:要澄清一下,您将拥有每个障碍物由许多单独的图像组成(我相信它们只是原始颜色中的纯色),并且每个图像具有弹丸可能与之相撞的矩形,损坏了该部分障碍物。

在原始空间入侵者中,任何一次在屏幕上不超过3个入侵炸弹,因此可以可以简单的矩形碰撞。

我这样做的方式是用具有ID的单个块/像素来创建基础。当炸弹撞到底座时,我通过反向循环获得了第一个像素的ID,该循环在此时破裂。

从那个像素中,我以爆炸的形状向上,向下,左和右数来计数许多像素,并删除了这些基本像素,在底部留下了不错的凹痕。

使用相同的方法用于在基地上射击。

不幸的是,我无法发布游戏代码,因为它超过了最大字符发布限制。我在codepen上有游戏,但我不允许在没有某些代码的情况下发布链接,该代码太大了!

但是,如果您转到Codepen并进行搜索太空入侵者,则在第一页上显示为" Space Invaders Taito 1978'

最新更新