情况:我正在使用libGDX编写2D等距样式的Java游戏。 现在我有一个可移动的播放器,它可以与固体物体的瓷砖正确碰撞。
问题: 现在谈到了瓷砖的渲染顺序。默认情况下,库代码从底层maplayer呈现到顶层。 (地面是第0层,对象层是第1层)这是有道理的。我把玩家画上了。这意味着玩家总是处于在某些情况下没有意义的一切事物上。
目标:由于等距外观意味着拥有一种3D视角,因此玩家可以在对象后面或前面。所以我必须想出一些代码来决定玩家是在它后面还是在它前面渲染。我把这个冰箱作为一个例子:
我希望可以理解我的意思是"逻辑碰撞"。我有一些想法如何实现,但这将是一个混乱的代码。所以我想问一下是否有人有这方面的经验,或者可以给我一些可以帮助我的好消息来源。
感谢阅读!
答案 0 :(得分:0)
这取决于你如何渲染。我想到的一件事是从上到下和从左到右渲染对象/图块,这种方式在大多数情况下,对象应始终在正确的图层中。现在,根据你制作图形的方式,可能存在缺陷。如果是这样,你也可以有几层优先级,绘制对象/图块的不同部分,或者在其他部分之前绘制一些东西。如果您还将图块和对象作为单独的类型,则可以使对象能够在图块之前和之后绘制,以满足不同的需求。对于像这样的情况,你也可以实现一些瓦片来拥有对象,但与我提到的其他方法相比,这也可能浪费处理器时间。
如何将对象位置与平铺位置进行比较实际上并不困难。可能足够的方法是将平铺位置与对象位置进行比较。让我们假设一个假设的情况,你的瓷砖尺寸 32 x 32 ,并且有 25 x 18 的物体。对象位于偏移 0 x 0 和 1 x 0 的图块前面,但在 0 x 1 后面 1 x 1 (如果我们想象瓷砖从上角开始)。因此,我们首先在 0 x 0 和 1 x 0 处绘制切片,然后是对象,然后在 0 x 1 和处切片1 x 1 。它应该自然地落在它的正确位置,具有相当简单的代码逻辑。
希望你对如何实现它有一些想法:)