首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >太空入侵者基地恶化

太空入侵者基地恶化
EN

Stack Overflow用户
提问于 2017-03-02 14:01:07
回答 3查看 423关注 0票数 2

在太空入侵者中,当外星人的子弹击中你的防御基地时,它们会慢慢恶化。有人能解释一下游戏是怎么做到的吗?

我猜他们没有使用图像作为基础,也没有使用边界矩形碰撞检测?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-04 02:41:45

拨打返回机。最初的太空入侵者使用一个简单的比特掩码来增加基地的伤害。这些图像只是基本的1位图像,从内存1字节宽到8字节(8x8像素)

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

为了检测一个基地命中,还使用了一个掩码。bombMask = 0b00000011向左移动(或可能已被查找)以匹配x位置。要查看是否有命中,只需使用基数位的掩码pixelByte & bombMask,如果结果不为零,则表示命中了基数。

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

今天,您可以使用相同的方法,但您很少看到如此多的精力投入到细节中。我发现现代游戏倾向于走捷径,只有一组图像来显示损坏。

因此,只需使用伤害计数,基于命中框或圆圈,显示图像来说明伤害状态、健康、轻微伤害、重大伤害和破坏。易于实现!对游戏有好处吗?好吧,这完全是另一回事。

票数 1
EN

Stack Overflow用户

发布于 2017-03-02 14:09:18

我不是很确定它最初是怎么做的,但一种方法是让每个屏障由许多单独的块组成,每个块都有自己的健康值。如果某个块的命中率足够高,则将其删除。

这应该允许壁垒逐渐恶化。

编辑:为了清楚起见,你可以让每个障碍物由许多独立的图像组成(我相信它们在原始图像中只是一个平面颜色),并且每个图像都有一个矩形,投射物可以与之碰撞,破坏了障碍物的这一部分。

票数 1
EN

Stack Overflow用户

发布于 2017-03-09 13:36:39

在最初的太空入侵者中,任何时候屏幕上的入侵者炸弹都不超过3枚,所以简单的矩形碰撞是可以的。

我这样做的方式是从具有id的单个块/像素创建基础。当炸弹击中基地时,我通过一个反向循环得到第一个像素的id,这个循环在那个点上中断。

从这个像素开始,我计算了一些大致呈爆炸形状的向上、向下、向左和向右的像素,并去掉了这些基本像素,在底部留下了一个很好的凹痕。

雷射炮在基地发射时也采用了同样的方法。

不幸的是,我不能张贴游戏代码,因为它超过了最大字符张贴限制。我在Codepen上有游戏,但我不允许在没有一些代码的情况下发布链接,这太大了,如上所述!

但是,如果你去Codepen搜索太空入侵者,它会在第一页显示为‘太空入侵者Taito 1978’。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42547912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档