Cocos2d iphone 我可以在两个cctmxlayer之间分层一个CCSprite吗?

Cocos2d iphone 我可以在两个cctmxlayer之间分层一个CCSprite吗?,cocos2d-iphone,ccsprite,tmx,Cocos2d Iphone,Ccsprite,Tmx,我正在制作一个自上而下的射击游戏,它广泛使用了用“平铺”应用程序创建的TMX地图。在我的TMX地图中,我有一个带有地砖的“背景”层,它显示在我的角色(CCSprites)下面 我在TMX文件中有另一层称为“前景”,我希望它出现在我的CCSprites的“上方”,给人一种它们在各种对象下行走的错觉 我尝试使用CCNode类的vertexZ属性来执行此操作: CCTMXLayer *backgroundLayer = ... CCSprite *spriteNode = ... CCTMXLayer

我正在制作一个自上而下的射击游戏,它广泛使用了用“平铺”应用程序创建的TMX地图。在我的TMX地图中,我有一个带有地砖的“背景”层,它显示在我的角色(CCSprites)下面

我在TMX文件中有另一层称为“前景”,我希望它出现在我的CCSprites的“上方”,给人一种它们在各种对象下行走的错觉

我尝试使用CCNode类的vertexZ属性来执行此操作:

CCTMXLayer *backgroundLayer = ...
CCSprite *spriteNode = ...
CCTMXLayer *foregroundLayer = ...

[backgroundLayer setVertexZ:1];
[spriteNode setVertexZ:2];
[foregroundLayer setVertexZ:3];
…但事实证明vertexZ实际上改变了openGL视图中节点的视觉外观。当具有较高的vertexZ值时,它会有效地使CCNode看起来更大或更接近用户。我不想这样——我想要的只是一种不可思议的蛋糕效果,层与层之间没有任何视觉差异

所以我想我会尝试改变节点的zOrder属性,如下所示:

[[backgroundLayer parent] reOrderChild:backgroundLayer z:1];
[[spriteNode parent] reOrderChild:backgroundLayer z:2];
[[foregroundLayer parent] reOrderChild:backgroundLayer z:3];
但是我意识到我在这里所做的有一个基本问题,因为我的spriteNode是CCScene的直接子节点,但是背景和前景节点都是CCTMXTiledMap的子节点,而CCTMXTiledMap本身就是CCScene的子节点

所以我基本上是想在地图的两层之间滑动一个CCSprite,从CCScene的角度来看,它实际上只是同一层的两部分


似乎我可以创建一个额外的CCTMXTiledMap实例来保存前景层,但这似乎也有点过头了。我的另一个想法是创建ccsprite来达到同样的目的,但似乎有更好的方法。

是的,我曾经非常轻松地使用过平铺,我相信有一个选项可以将对象层添加到TMXTiledMap(平铺->层->添加对象层…),然后,一旦导入到构建中,您就可以将CCSprite与您创建的相应对象层链接起来。我会把你的问题发布在cocos2d论坛上,因为那里的人更有经验,有能力用例子来回答这个问题

有趣的是,我的tmx文件中确实有几个对象层,其中包含构成CCSprites框架的对象,但我不知道您可以将它们与对象层链接起来。如果没有任何结果,我会尝试在那里发帖,谢谢你的建议-但是说实话,在使用堆栈溢出后,很难回到一个普通的论坛!同意,堆栈是伟大的,张贴在那里只是因为它是更利基。很好,卢卡斯,事实证明,你的建议实际上是正确的答案——论坛上的人非常有帮助,谢谢!