我已经用Java编写了二维等距引擎的开始。我已经介绍了大部分的基础知识,比如平铺顺序和地图上的对象深度排序。然而,我遇到了一个问题,如果不把我的方法弄得一团糟,我似乎无法解决这个问题。
问题是,在我的等轴测世界中,当对象基础所在的平铺在屏幕上渲染时,会渲染每个对象但是,有些对象有很大的高度(例如建筑物),可以从非渲染的屏幕外区域延伸到渲染的屏幕区域,我无法检测到这一点,因为到目前为止,我的引擎依赖于存在的对象基础来渲染图像。
我的问题是,我如何检测一个高度值较大的对象应该出现在渲染区域中,而其底部在屏幕外区域中?我真的不想只是渲染整个地图(包括屏幕外区域),因为这是非常CPU密集的,所以我正在寻找一个算法或方法,使我可以检测这个有问题的区域。
编辑:更新问题以直观地表示下面的问题。

最佳答案

你能修改你的“瓦片”的概念,包括一个“信封”之类的东西吗?一个矩形,它限定了最大的高度和宽度?例如,当“大高度”对象被创建/分配给平铺时,可以增加其封套的高度。
然后只需要为信封与屏幕重叠的平铺渲染。

10-08 07:39