【问题标题】:Inserting CCParticleSystemQuad between sprites in different CCSpriteBatchNode's在不同 CCSpriteBatchNode 的精灵之间插入 CCParticleSystemQuad
【发布时间】:2013-02-04 20:54:21
【问题描述】:

我目前在 Cocos2d 场景中有几层(在 Kobold2d 中运行)。每个层都有一个附加的精灵批处理节点。我需要使用批处理节点,因为我一次在屏幕上拥有大量可笑的精灵。一切正常,我已经设置了一个小粒子系统。我遇到的问题是 CCParticleBatchNode 粒子发射器总是在一切之上(因为它是 zOrder 的最高层) - 但这是一个等距游戏,显然不起作用。

有没有一种方法可以让我在包含 CCSpriteBatchNode 的任何层上的精灵之间偷偷摸摸发射器?我试过搞乱vertexZ(我使用的是最新版本的cocos2d 2.+),但我做什么都没关系,它似乎没有改变任何东西,即使Kobold2d的LUA文件会启用此项已正确设置,并且我的批处理节点上的 programForKey:kCCShader_PositionTextureColorAlphaTest 的着色器已启用 - 但也许这甚至不是最好的解决方案?

有没有人遇到过这样的事情,或者提出了我可以做出的任何牺牲或我没有想到的技巧?

【问题讨论】:

    标签: objective-c cocos2d-iphone kobold2d


    【解决方案1】:

    要使用 vertexZ,您需要启用深度缓冲(参见 config.lua)。 Vertexz 是改变 spritebatches 和其他节点之间绘制顺序的唯一方法。

    【讨论】:

    • ` DefaultTexturePixelFormat = TexturePixelFormat.RGBA8888, GLViewColorFormat = GLViewColorFormat.RGB565, GLViewDepthFormat = GLViewDepthFormat.Depth24Bit, -- Iso 瓦片的正确 Z 排序所需的深度缓冲区 GLViewMultiSampling = NO, GLViewNumberOfSamples = 0, Enable2DProjection = YES , EnableRetinaDisplaySupport = NO, EnableGLViewNodeHitTesting = NO, EnableStatusBar = NO,` 可能我没有正确设置,对吗?
    • 无论如何,被认为已回答,因为您几乎是所有此类事情的来源。感谢您缩小我的注意力。
    • Depth16Bit 应该足够了。此外,我认为 16 位或 24 位深度缓冲区选项不再存在,但不记得是哪一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多