我想用cocos2D制作等距的,基于平铺的iPhone游戏。
精灵需要在其他“精灵”的精灵之上绘制。我正在寻找最佳方法。
我想避免使用画家的算法,因为它涉及到每帧昂贵的所有精灵的排序。
GPU和cocos2D支持Z缓冲算法,所以这就是我想要使用的,但是有一个问题。一些精灵,例如建筑物,占据多个瓷砖。为这样的精灵分配Z值很困难。
这些是我想到的选项:
我将对有用资源的任何建议或参考进行投票。
答案 0 :(得分:1)
对于#2,您可以计算对象中心的曼哈顿距离,并将此值用作该对象的z值。只要您避免地图中的非常长的对象(如5x1对象或更糟),它就会起作用。但是如果你真的需要将一个长对象放置在平铺地图中,那么通过使用公式设置z值来管理地图中对象的z顺序是不可能的。
证明这一点:
1.)将两个2x2对象水平放置在地图中,并在它们之间留下单位图块。
2.)在它们之间放置一个3x1对象。让我们将2x2对象命名为A和B,将3x1对象命名为C.
3.)如果你只是旋转C(不改变它的位置),则A和B的z顺序互换。
- 如果B现在在前面,B后面的一些物体将位于A的前方,因为C的旋转。并且知道A和B后面的哪些物体之前将成为A的前面是很昂贵的。在C轮换之后。