【问题标题】:Side Scroller in C++C++ 中的横向滚动条
【发布时间】:2011-12-05 14:28:12
【问题描述】:

我正在考虑使用 OpenGL 和 C++ 创建一个基本的横向滚动条,但是我无法解决一些基本的概念问题,即:

  1. 将窗口分成简单的“块”(某种网格系统)。我想在什么水平上做到这一点? (OpenGL 视口大小,还是通过一些抽象来确保使用 x 的倍数?)

  2. 存储所有这些“块”的数据以允许碰撞检测和一些特殊效果。什么是明智的做法 - 我一直在考虑多维对象数组(其中包含诸如瓷砖类型之类的信息),但这似乎不是一个非常优雅或有效的解决方案。

【问题讨论】:

  • 这对于 SO 来说可能是一个过于宽泛的问题。在您当地的书店或图书馆有很多教程风格的书籍。早在我用 DirectX7 做这件事的时候,还带着一本完全新手的书。

标签: c++ opengl grid side-scroller


【解决方案1】:

通常,划分为网格的不是窗口(即视口),而是“游戏区域”。根据您的艺术风格选择一个合适的尺寸(例如 64 像素 - 出于技术原因,您可能希望选择一个为 2 的幂的尺寸)并为您的游戏创建该尺寸的图块(作为一维数组存储和加载) )

然后,这些图块在图块地图中被引用(通过偏移量),它实际上描述了您的关卡的外观。每个图块还可以有额外的元数据来处理碰撞和游戏事件。您可能希望使用现有的地图格式和工具集来节省时间,例如 Mappy。

【讨论】:

  • Mappy 非常适合平铺网格引擎。对于横向滚动条,他最好使用单个背景纹理和叠加精灵,然后在游戏区域上移动视图矩形以确定背景的哪些部分以及要绘制的精灵。
【解决方案2】:

提示:
分别考虑显示和数据(查找模型-视图-控制器)。

存储数据的方式取决于访问方式,而不是显示方式。从计算机的角度考虑!

提示,在数据的一维存储中工作并计算出下一个向上/向下点的位置通常比在 2d 中工作更容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    相关资源
    最近更新 更多