如何在小视口上显示大滚动级别?

时间:2014-05-18 20:00:42

标签: c++ oop 2d game-engine gba

asked a question yesterday关于一个问题我在C ++ 2D GameBoy Advance游戏中显示一个级别,当级别大于屏幕大小时。但是,我可能有点特定,所以我想更普遍地问这个。

尝试在屏幕上显示较大(512x512像素)的滚动级别(240x160像素)时,最简单的方法是什么?

到目前为止我的代码结构的简要描述:我有一个名为Object的基类,它定义了(x,y)的位置和宽度和高度,有一个Entity类,它继承自Object并添加了velocity组件,以及从Entity继承并添加移动函数的Character类。我的播放器是一个Character对象,我希望播放器拾取的是一组Entity对象。 player和cubes数组都是Level类的成员,它也继承自Object。

到目前为止,我已经实现了一个游戏,当游戏的等级与屏幕大小相同时,它可以很好地运行 - 所有对象的位置都相对于它们在关卡中的位置进行存储。但是,当我在屏幕上偏移水平时,我正在努力解决如何在正确的位置显示对象的问题。我希望视口永远不会延伸到关卡之外,如果视口不在关卡的边缘,则在屏幕中间显示播放器。

我应该尝试使用几个简单的偏移变量来移动背景吗?如果是这样,应该以什么顺序计算和应用抵消?偏移量如何不同地适用于玩家和盒子?或者,我应该尝试创建另一个Object作为视口的Level类的成员吗?我将如何使用它来计算偏移?

非常感谢任何提供的建议。

0 个答案:

没有答案