Cocos2d iphone Cocos2d图层层次结构和绘图顺序

Cocos2d iphone Cocos2d图层层次结构和绘图顺序,cocos2d-iphone,Cocos2d Iphone,我被cocos2d中的层层次结构问题所困扰 我有一个身体部位有精灵的角色。身体的父精灵是躯干。然后我的手臂和头部是它的孩子,肘部和手是手臂的孩子。到目前为止效果非常好:我转动手肘,手也跟着转动,就像在一个真正的木偶上一样 问题是,当我想让它摆动时,手会在头部后面,因为头部的z阶比手臂高(手臂是手的双亲) 因此,我添加了另一只手作为躯干的子对象,并根据我是需要在头部上方还是后面的手来打开和关闭它的不透明度。但是,另一只手不是手臂的孩子,它是躯干的孩子,在手臂旋转时不会旋转。所以,我需要在每帧中手动

我被cocos2d中的层层次结构问题所困扰

我有一个身体部位有精灵的角色。身体的父精灵是躯干。然后我的手臂和头部是它的孩子,肘部和手是手臂的孩子。到目前为止效果非常好:我转动手肘,手也跟着转动,就像在一个真正的木偶上一样

问题是,当我想让它摆动时,手会在头部后面,因为头部的z阶比手臂高(手臂是手的双亲)

因此,我添加了另一只手作为躯干的子对象,并根据我是需要在头部上方还是后面的手来打开和关闭它的不透明度。但是,另一只手不是手臂的孩子,它是躯干的孩子,在手臂旋转时不会旋转。所以,我需要在每帧中手动定位它

因此,我的问题是:是否可以将一个节点的精灵作为父节点来继承其平移,但将其绘制在另一个指定精灵的上方?(如上所述,为其父母的另一个兄弟姐妹)

更改手臂和头部的z顺序是毫无疑问的,因为动画是从不支持这些参数的另一个程序导出的

谢谢大家!

如何从其他程序导出“动画”?我相信这就是问题所在。如果我要这样做,我会使用Z层。更好的方法是,查看用于创建动画的精灵地图集


我认为你在制作动画方面做得太多了。使用Atlas,您可以为人物创建动画,将其双手举起并挥舞。然后调用sprite atlas上的动画。

我在我的应用程序中解决了同样的问题,在模型中添加了一个额外的不可见躯干sprite。在这种情况下,你可以将一只手臂和头部绑在看不见的躯干上,另一只绑在第二个躯干上,我想我找到了解决问题的办法。它是节点的vertexZ属性。

/** The real openGL Z vertex.
 Differences between openGL Z vertex and cocos2d Z order:
   - OpenGL Z modifies the Z vertex, and not the Z order in the relation between parent-children
   - OpenGL Z might require to set 2D projection
   - cocos2d Z order works OK if all the nodes uses the same openGL Z vertex. eg: vertexZ = 0
 @warning: Use it at your own risk since it might break the cocos2d parent-children z order
 @since v0.8
 */

@property (nonatomic,readwrite) float vertexZ;


还要确保在启用深度的情况下初始化EAGLView

EAGLView *glView = [EAGLView viewWithFrame: [window bounds]
                               pixelFormat: kEAGLColorFormatRGBA8
                               depthFormat: GL_DEPTH_COMPONENT16_OES];

这是真的,但是我们已经建立了一个导出和导入动画的管道。我所需要做的就是从一只手上创建精灵的父对象进行变换,但将其绘制到另一个父对象的上方。就像有两个不同的父母。在Cocos2D中是否可以不修改绘图树代码?我不这么认为,但我对Cocos2D比较陌生,只做过2个项目。谢谢Andrew,我会问动画制作人他们是否可以这样做。