2

假设:我正在使用使用 OpenGL 2.0 ES 的 Cocos2D 2.0。

我的游戏有一张用于所有级别资产(例如背景、敌人、云)的精灵表,以及一张用于玩家角色精灵和 HUD 元素的精灵表(例如,通常两者都在其余资产之上的 z 级别)。这是因为我允许用户更改玩家精灵并且无法将所有资源都放在一个精灵表中。

我还将 CCSpriteBatchNode 用于两个精灵表和 pvr.ccz 压缩纹理文件。问题是,在某些情况下,我需要更改位于不同精灵表(关卡精灵表、玩家精灵表)中的某些资产(例如云、玩家、老板位置)的绝对 z 水平。

两个实际案例场景:

  • :我希望玩家去云层下方,因此动态改变玩家精灵的绝对z位置也相对于关卡资产精灵批处理节点。
  • :当关卡boss到达时,我想让boss飞到玩家上方(因此绝对z-level与玩家精灵z-level相比应该+1)。这似乎也需要启用 z 缓冲和使用 vertexz。

现在,我对如何做到这一点感到困惑,因为据我所知,每个精灵表都被认为是一个不同的节点,因此是一个不同的 OpenGL 调用(启用 z-buffering 和 vertexz 会降低我的性能需要更多调用吗?),并且是想知道是否有一些教程/参考可以帮助我和/或是否有人可以分享一些类似案例的经验

4

0 回答 0