c++ - C++ 中的横向滚动条

标签 c++ opengl grid side-scroller

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

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

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

最佳答案

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

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

关于c++ - C++ 中的横向滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7731546/

相关文章:

c++ - 对字符串数组进行基数排序?

c++ - 在对象 vector 中找到最大值

opengl - 在 OpenGL 中平滑面部边缘的技术

javascript - 将自定义项目添加到 ExtJS3 中的网格菜单

c# - 为什么我的 GridSplitter 没有出现?

c++ - 将网格内的数字转换为其对应的 x,y 坐标

c++ - 嵌套类的类内 friend 是否可以访问外部类成员?

c++ - CMake - 不必要地构建了两次对象?

c++ - 我的 glOrtho 有什么问题?负零而不是零

c++ - OpenGL Quad 不绘图