1

我已经使用 Java 编写了 2D 等距引擎的开端。我已经掌握了大部分基础知识,例如地图上的平铺顺序和对象深度排序。但是,我遇到了一个问题,如果不让我的方法变得非常混乱,我似乎无法解决这个问题。

问题是,在我的等距世界中,当对象基础所在的图块在屏幕上呈现时,每个对象都会被呈现。但是,某些对象具有很大的高度(例如建筑物),可以从未渲染的屏幕外区域延伸到渲染的屏幕区域,我无法检测到这一点,因为我的引擎到目前为止依赖于对象基础呈现图像。

我的问题是,我如何检测一个具有大高度值的对象应该存在于渲染区域中,而它的基础位于屏幕外区域?我真的不想只渲染整个地图(包括屏幕外区域),因为这非常占用 CPU,所以我正在寻找一种算法或方法来检测这个有问题的区域。

编辑:更新了问题以直观地表示以下问题。

如何发现对象的高度何时延伸到可渲染区域?

4

2 回答 2

2

您能否修改您的“平铺”概念以包括“信封”之类的东西......一个界定最大高度和宽度的矩形?例如,当“大高度”对象被创建/分配给瓷砖时,您可以增加其信封的高度。然后,您只需要为信封与屏幕重叠的图块进行渲染。

于 2013-08-05T12:32:05.453 回答
0

我会在我的对象“boolean isVisible(Rectangle2D bounds)”上有一个方法。在对对象进行排序之前和在渲染已排序的对象之前调用此方法。

于 2013-07-08T22:28:35.667 回答