【问题标题】:Move sprite to top of all elements - Cocos2d将精灵移动到所有元素的顶部 - Cocos2d
【发布时间】:2015-03-03 07:11:03
【问题描述】:

我知道如何根据所有子节点定位 CCSprite

sprite.zOrder = 5;

但是,我有一个添加到 CCScene 的 CCNode,我需要将该 CCNode 的一个子节点定位在 CCScene 中的所有元素之上。这可能吗?

【问题讨论】:

  • 先将 CCNode 添加到场景中。即使使用相同的 zOrder,它的所有子代都将“高于”您添加的任何内容。
  • 不幸的是,事情没那么简单。从技术上讲,该节点是具有变化元素的背景。所以我猜没有简单的方法。我可以找到一种解决方法,但希望有一些可用的方法
  • 不可能,尽管根据我的经验,您也不需要“硬”方式,只需考虑层次结构的作用以及您是否不能轻松地对其进行编程。典型情况是应该跟随其父节点的节点,但必须以不同的 z 顺序排列。因此,您不要将其设为子节点,而前父节点只是通过向其发送诸如 adjustYourPositionToMine: 之类的 objc 消息将其位置应用于前子节点:...在前父节点更新其位置之后执行此操作(更新:应该够了),你就完成了。
  • 另外,不要进入vertexZ,真的不值得麻烦,除非你需要精细控制每个节点的绘制顺序,比如在等距游戏中

标签: cocos2d-iphone ccsprite z-order


【解决方案1】:

您也许可以手动设置vertexZ 属性。它是隐藏的,所以你必须#import CCNode_Private.h。这将破坏 zOrder 强制执行的父子级,但也许这就是您想要的。 您还需要启用深度缓冲区CCSetupDepthFormat: @(GL_DEPTH_COMPONENT24_OES)

【讨论】:

    猜你喜欢
    • 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
    相关资源
    最近更新 更多