我有一个 2D 自上而下的 45 度游戏,比如口袋妖怪或塞尔达。由于对象的 y 值决定了它的深度,因此需要按照 y 值的顺序绘制对象。因此,例如,当您站在一棵树后面时,树会被绘制在您的播放器顶部,看起来就像您站在树后面一样。
我目前的设计是画一排瓷砖,然后画站在那排的任何玩家,然后画下一行,然后画站在上面的任何玩家。这样,任何 y 值高于玩家的图块都被绘制在它们前面以模拟深度。
但是,我的玩家目前是一个std::vector
在绘制所有瓷砖后简单地迭代和绘制的对象。为了使我的方法起作用,我必须为每一行图块迭代向量,并且仅在它们位于当前行时才渲染,或者以某种方式按每帧的 y 值对每个玩家进行排序。这两种方法似乎都占用大量 CPU,也许我想多了,在这种类型的游戏中有一种更简单的模拟深度的方法。
编辑: 这个游戏是MMORPG类型的游戏,所以可能会有很多玩家/NPC四处走动,这就是为什么我需要一个非常有效的方法。
和想法或意见将不胜感激!
谢谢