像《塞尔达传说》这样的2D游戏如何处理仅显示部分角色的建筑物后面的角色?


28

我正在尝试开发一个简单的Zelda风格的游戏。我发现这个非常有用的话题

《 LoZ:与过去的链接》如何处理小区块冲突?

我将其作为参考来开发我的碰撞检测机制。但是,有些事情我听不懂。当Link在建筑物后面时,仅显示他的一部分。谁能帮助我了解如何实现这种效果?建筑物不是背景的一部分吗?


我喜欢将渲染样式视为具有地面层(草层,瓷砖地板等),对象层(锅,敌人,衬砌,链接等)和天空层(屋顶,举起的花盆,树顶)等)。在锅的例子中,在层之间移动东西的逻辑可能有点奇怪,但这是另一回事。
本杰明·丹格·约翰逊

Answers:


32

2D平铺游戏通常具有更多的图层,这些图层在不同的图层中进行渲染-一些在背景中进行渲染,而其他在玩家上方。

屋顶的该部分渲染在玩家上方,这就是为什么玩家可以在建筑物后面走的原因。

这是我的游戏中的图像示例,可以更好地进行说明: 在此处输入图片说明


因此建筑物本身可以是背景的一部分,但是屋顶是用精灵在该图层上绘制的不同图层的一部分?
Tinadm

2
@Tinadm不一定必须是整个屋顶,它可能只是屋顶的一部分,该部分将在其他一切之后渲染的玩家上方绘制。
Tetrad

7
+1效果超赞。确实对视觉学习者有所帮助。
UnderscoreZero

1
我很确定旧的SNES JRPG使用相同的技术。FF2,FF5等。该技术仍然有效。
Hatoru Hansou

1
您可以使用仿真器(例如ZSNES)很好地看到这一点,该仿真器允许您手动打开和关闭各个图层。
Tobias Kienzler 2013年

5

虽然Blodyavenger的答案盖它是如何最有可能完成的,这里的另一种可能性,这将允许容易的角度切换(例如,四个或八个不同方向,或一些相机标高):

考虑您的地图的自顶向下视图,例如

  ABCDEFGHIJKL
1 +-----=----+
2 |  .    .  |
3 |    X   o |
4 | .        ||
5 |    .   . |
6 +--=-------+

比方说,这X是一个高支柱。对于每个对象,您都存储了所有可能的透视图的图像(或使用相同的图像...),这些图像可以是任意高很多的图块。现在,在绘制时,只需从当前透视图中背面的列或行开始,例如,如果从南方看,则为第1行。之后,将第二行/列向后绘制,依此类推。这样,当某物高于一个图块(拉伸到当前透视图)时,它只会覆盖后面的内容。

(很抱歉,缺少漂亮的图片,我不太擅长于应用图形...)


请注意,如何通过拉伸对象纹理轻松地以这种方式更改相机仰角
Tobias Kienzler 2013年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.