我昨天问了一个问题,当关卡大于屏幕尺寸时,我在 C++ 2D GameBoy Advance 游戏中显示关卡时遇到的问题。但是,我可能有点太具体了,所以我想更笼统地问这个问题。
尝试在小得多的屏幕(240x160 像素)上显示大的滚动级别(512x512 像素)的最简单方法是什么?
到目前为止对我的代码结构的简要描述:我有一个名为 Object 的基类,它定义了 (x, y) 位置和宽度和高度,有一个继承自 Object 并添加速度分量的 Entity 类,以及一个 Character 类继承自Entity,增加了运动功能。我的玩家是一个角色对象,我希望玩家拿起的盒子是一个实体对象数组。player 和 cubes 数组都是 Level 类的成员,它也继承自 Object。
到目前为止,我已经实现了一个在关卡与屏幕大小相同时运行良好的游戏——所有对象的位置都相对于它们在关卡中的位置存储。但是,当关卡在屏幕上发生偏移时,我很难弄清楚如何在正确的位置显示对象。我希望视口永远不会超出关卡,如果视口不在关卡边缘,则将播放器显示在屏幕中间。
我应该尝试使用几个简单的偏移变量来移动背景吗?如果是这样,应按什么顺序计算和应用偏移量?偏移量如何以不同的方式应用于播放器和盒子?或者,我应该尝试创建另一个对象作为视口的级别类的成员吗?我将如何使用它来计算偏移量?
提供的任何建议将不胜感激。