我正在考虑使用 OpenGL 和 C++ 创建一个基本的横向卷轴器,但是我无法解决一些基本的概念性问题,即:
将窗口分成简单的“ block ”(某种网格系统)。我想在什么水平上这样做? (OpenGL 视口(viewport)大小,还是通过某种抽象来确保使用 x 的倍数?)
存储所有这些“ block ”的数据以允许碰撞检测和一些特殊效果。解决这个问题的明智方法是什么 - 我一直在考虑对象的多维数组(其中包含图 block 类型等信息),但这似乎不是一个非常优雅或有效的解决方案。
最佳答案
通常,划分为网格的不是窗口(即视口(viewport)),而是“游戏区域”。根据您的艺术风格选择一个合适的尺寸(例如 64px - 由于技术原因,您可能希望选择一个 2 的幂的尺寸)并为您的游戏创建该尺寸的图 block (作为一维数组存储和加载) )
然后,这些瓦片在瓦片 map 中被引用(通过偏移量),瓦片 map 实际上描述了关卡的外观。每个图 block 还可以有额外的元数据来处理碰撞和游戏事件。您可能希望使用现有的 map 格式和工具集来节省时间,例如 Mappy。
关于c++ - C++ 中的横向滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7731546/