SDL Tile 和 Sprite 渲染地形

Posted

技术标签:

【中文标题】SDL Tile 和 Sprite 渲染地形【英文标题】:SDL Tile and Sprite Rendering Terrain 【发布时间】:2015-02-10 21:24:16 【问题描述】:

你好最近我开始搞乱 SDL。由于我对一些 2D/2.5D 游戏感兴趣。所以我开始在 C++ 中使用 SDL,我希望重新创建类似于 Original Zelda 的东西。 据我了解,这些游戏使用某种等距透视或标准正交视图,但我不明白的一件事是如何在地图上的这些对象(瓷砖、精灵等)之间生成类似 3D 的碰撞2D)。看看下面的视频链接。这是纯粹在 SDL 中创建的,是 PerPixel 碰撞还是矩形?或者它也可能涉及OpenGL? 链接:https://www.youtube.com/watch?v=wFvAByqAuk0

【问题讨论】:

类似 3D 的碰撞?你什么意思?对我来说看起来很 2D,原来的 lttp 也是如此。我们应该如何了解该游戏的引擎? 他的灌木和树木碰撞在这里:youtube.com/watch?v=K7TdIW6oYdg。它们是如何实施的?我希望比我更有经验的人进行一些深入的解释,所以我也许可以掌握这个想法。在此先感谢:) 原版塞尔达没有什么等距的。它是 2D 的,为了给人一种深度的感觉而渲染了瓷砖。 【参考方案1】:

原来可能是一个简单的矩形碰撞。 我相信您的“3D 碰撞”是某些物体中存在的部分碰撞。例如,林克可以穿过树叶,但不能穿过树干。

您可以通过 2 种方式轻松完成:

    渲染层和碰撞层。树干位于一层,并被一些碰撞盒覆盖。链路存在于中间层中。叶子在另一层,在林克的顶部。然后,您可以检查 Link 的 Layer 与具有树干和其他对象的层之间的冲突。 此外,您可以为您的图块创建一个属性,您可以在其中存储您希望获得的碰撞类型。例如,“盒子”碰撞将告诉您的引擎该对象在每一侧都是可碰撞的。或者“底部”碰撞会告诉您的引擎,只有当 Link 走入该对象时,他才会与该对象发生碰撞(这是您将在某些 2D 侧滚轴上看到的效果:跳过一个图块,然后落入其中。

在那些简单的情况下,每像素碰撞是不值得的。我发现使用创意、蒙版和图层来个性化碰撞会更好。

顺便说一句:这个主题更适合https://gamedev.stackexchange.com/

【讨论】:

以上是关于SDL Tile 和 Sprite 渲染地形的主要内容,如果未能解决你的问题,请参考以下文章

如何将 2D Sprite 统一添加到材质中?

Cesium原理篇:3最长的一帧之地形(4:重采样)

OpenGL高度图地形渲染不绘制

OpenGL:纹理坐标实时变化的地形的最佳渲染方法?

ArcGIS制图技巧系列地形渲染

:如何创建一个2D游戏