我正在考虑使用 OpenGL 和 C++ 创建一个基本的横向滚动条,但是我无法解决一些基本的概念问题,即:
将窗口划分为简单的“块”(某种网格系统)。我想在什么水平上做到这一点?(OpenGL 视口大小,还是通过一些确保使用 x 的倍数的抽象?)
存储所有这些“块”的数据以允许碰撞检测和一些特殊效果。什么是解决这个问题的明智方法 - 我正在考虑一个多维对象数组(其中包含诸如瓷砖类型之类的信息),但这似乎不是一个非常优雅或有效的解决方案。
我正在考虑使用 OpenGL 和 C++ 创建一个基本的横向滚动条,但是我无法解决一些基本的概念问题,即:
将窗口划分为简单的“块”(某种网格系统)。我想在什么水平上做到这一点?(OpenGL 视口大小,还是通过一些确保使用 x 的倍数的抽象?)
存储所有这些“块”的数据以允许碰撞检测和一些特殊效果。什么是解决这个问题的明智方法 - 我正在考虑一个多维对象数组(其中包含诸如瓷砖类型之类的信息),但这似乎不是一个非常优雅或有效的解决方案。
通常,划分为网格的不是窗口(即视口),而是“游戏区域”。根据您的艺术风格选择一个合适的尺寸(例如 64 像素 - 出于技术原因,您可能希望选择一个为 2 的幂的尺寸)并为您的游戏创建该尺寸的图块(作为一维数组存储和加载) )
然后,这些图块在图块图中(通过偏移量)被引用,它实际上描述了您的关卡的外观。每个图块还可以有额外的元数据来处理碰撞和游戏事件。您可能希望使用现有的地图格式和工具集来节省时间,例如 Mappy。
提示:
分别考虑显示和数据(查找模型-视图-控制器)。
存储数据的方式取决于访问方式,而不是显示方式。从计算机的角度考虑它!
提示,在数据的一维存储中工作并计算出下一个向上/向下点的位置通常比在 2d 中工作更容易。