在太空入侵者中,当外星子弹击中你的防御基地时,它们会慢慢恶化。谁能解释一下游戏是如何做到这一点的?
我猜他们没有使用图像作为底座,也没有进行边界矩形碰撞检测?
最佳答案
拨入回程机。最初的太空入侵者使用简单的位掩码来增加对基地的伤害。这些图像只是基本的 1 位图像,来自内存 1 字节宽和 8 字节向下(8 x 8 像素)
为了应用损坏,有一个掩码[0b11111001,0b11110000],它被左移(进位放置在最低位),然后用基字节掩码。 pixelByte &= maskByte
。然后剪掉损坏的图案。如果炸弹路径上有任何像素剩余,炸弹将继续击中基地。
为了检测基地命中,还使用了掩码。炸弹掩码 = 0b00000011 左移(或者可以查找)以匹配 x 位置。要查看是否命中,您只需将掩码与基数位 pixelByte &ombMask
相与,如果结果不为零,则基数已被命中。
它全部是用汇编编写的,在当时是编程杰作。我仍然记得当时的想法:“它们怎么能这么快地移动这么多像素。”
今天你可以使用同样的方法,但你很少看到像这样在细节上投入如此多的努力。我发现现代游戏倾向于走捷径,只是用一组大量的图像来显示伤害。
因此,只需根据命中框或圆圈获取伤害计数,显示图像即可说明伤害状态:健康、轻微伤害、严重伤害和损坏。易于实现!对游戏有好处吗?好吧,这完全是另一回事。
关于collision-detection - 太空侵略者基地恶化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42547912/