2014-10-30 75 views
1

情况:我正在用libGDX编写2D等距风格的Java游戏。 现在我有一个可移动的播放器,可以正确碰撞固体物体的瓦片。如何实现等角拼贴的逻辑渲染顺序?

问题: 现在谈到瓷砖的渲染器。默认情况下,库代码从底层maplayer呈现到顶层。 (地面是第0层,物体层是第1层)这是有道理的。我在上面画出了玩家。这意味着玩家总是在某些情况下没有意义的事情之上。

目标:由于等距外观意味着有一种3D透视图,玩家可以在物体的后面或前面。所以我不得不提出一些代码来决定玩家是在后面还是在前面。我有这样的冰箱为例:

Example

我希望这是可以理解我的意思与“逻辑的碰撞”。我有一些想法如何实现这一点,但这将是一个混乱的代码。所以我想问问任何人是否有这方面的经验,或者可以给我提供一些可以帮助我的好消息。

感谢您的阅读!

+3

当然显而易见的解决方案是维持玩家在** **无论背后或其他对象的前面对象层的一些想法。 – OldCurmudgeon 2014-10-30 22:36:34

+0

是的,我的问题是做这件事的最好方法是什么。你只是重复我的问题/问题。 – Pixell 2014-10-31 09:07:25

+3

[画家算法](http://en.wikipedia.org/wiki/Painter%27s_algorithm)可能是一个好的开始。不知道你正在使用哪个渲染库,很难提供建议。消极的态度也没有帮助。 – OldCurmudgeon 2014-10-31 09:36:21

回答

0

这取决于你如何渲染。想到的一件事是,从上到下,从左到右渲染对象/瓷砖,这样在大多数情况下,对象应始终处于正确的层次。现在取决于你如何制作图形,这可能存在缺陷。如果是这样,你也可以有几层优先级,绘制对象/瓷砖的不同部分,或在其他部分之前绘制某些东西。如果你还有不同类型的图块和对象,你可以让对象有能力在图块前后画图,以满足不同的需求。对于这样的情况,您也可以实现一些图块以获得对象,但与我提到的其他方法相比,这也可能浪费处理器时间。

如何将对象位置与瓷砖位置进行比较实际上并不困难。可能一个足够的方法是将瓷砖位置与对象位置进行比较。让我们假设一个假设的情况,在那里您的瓷砖尺寸为32 x 32,并且存在对象25 x 18。对象将是瓷砖前在偏移0 X 01×0,但背后0 X 11×1(如果我们想象中的瓦片从上角开始)。因此,我们首先在0 X 0绘制瓷砖,和1×0,则对象,然后拼贴在0 X 11×1。它应该自然地落在它正确的位置,用相当简单的代码逻辑。

希望你有关于如何实现它:)