collision-detection - 太空侵略者基地恶化

标签 collision-detection 2d-games

在太空入侵者中,当外星子弹击中你的防御基地时,它们会慢慢恶化。谁能解释一下游戏是如何做到这一点的?

我猜他们没有使用图像作为底座,也没有进行边界矩形碰撞检测?

最佳答案

拨入回程机。最初的太空入侵者使用简单的位掩码来增加对基地的伤害。这些图像只是基本的 1 位图像,来自内存 1 字节宽和 8 字节向下(8 x 8 像素)

为了应用损坏,有一个掩码[0b11111001,0b11110000],它被左移(进位放置在最低位),然后用基字节掩码。 pixelByte &= maskByte。然后剪掉损坏的图案。如果炸弹路径上有任何像素剩余,炸弹将继续击中基地。

为了检测基地命中,还使用了掩码。炸弹掩码 = 0b00000011 左移(或者可以查找)以匹配 x 位置。要查看是否命中,您只需将掩码与基数位 pixelByte &ombMask 相与,如果结果不为零,则基数已被命中。

它全部是用汇编编写的,在当时是编程杰作。我仍然记得当时的想法:“它们怎么能这么快地移动这么多像素。”

今天你可以使用同样的方法,但你很少看到像这样在细节上投入如此多的努力。我发现现代游戏倾向于走捷径,只是用一组大量的图像来显示伤害。

因此,只需根据命中框或圆圈获取伤害计数,显示图像即可说明伤害状态:健康、轻微伤害、严重伤害和损坏。易于实现!对游戏有好处吗?好吧,这完全是另一回事。

关于collision-detection - 太空侵略者基地恶化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42547912/

相关文章:

JavaScript - 我不明白这个碰撞检测功能是如何工作的

java - 旋转矩形中的碰撞检测

c++ - 与复合物体的圆碰撞

c++ - 按下键后在保龄球游戏中移动球

java - 控制 2d 游戏的动画速度

javascript - JS Canvas 游戏碰撞检测有问题

java - 我如何检测 Java 中图像(透明背景)的边缘?

collision-detection - 四叉树与仅用于碰撞检测的网格

java - Android 扫雷算法

Java:使用 Swing 编写游戏