Могу ли я наложить CCSprite между двумя слоями CCTMX? - PullRequest
0 голосов
/ 13 сентября 2011

Я делаю нисходящий шутер, который широко использует карты TMX, созданные с помощью приложения "Tiled".В моей карте TMX у меня есть «фоновый» слой с плитками для полов, который появляется под моими персонажами (CCSprites.)

У меня есть еще один слой в файле TMX, который называется «Foreground», который я хотел бы отобразить »выше "мои CCSprites, создавая иллюзию того, что они ходят под различными объектами.

Я попытался использовать свойство vertexZ класса CCNode, чтобы сделать это:

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

[backgroundLayer setVertexZ:1];
[spriteNode setVertexZ:2];
[foregroundLayer setVertexZ:3];

... но получаетсяout vertexZ фактически изменяет внешний вид узла в представлении openGL.Это фактически заставляет CCNode казаться больше или ближе к пользователю , когда он имеет более высокое значение vertexZ.Я не хочу этого - все, что я хочу, это что-то вроде эффекта «слоями невозможного тонкого пирога», без каких-либо визуальных различий между слоями.

Так что я решил попробовать изменить zOrderсвойство узлов, например:

[[backgroundLayer parent] reOrderChild:backgroundLayer z:1];
[[spriteNode parent] reOrderChild:backgroundLayer z:2];
[[foregroundLayer parent] reOrderChild:backgroundLayer z:3];

Но я понял, что есть фундаментальная проблема с тем, что я здесь делаю, так как мой spriteNode является прямым потомком CCScene, но узлы фона и переднего плана являютсяоба потомка моего CCTMXTiledMap, который сам является потомком CCScene.

Итак, я в основном пытаюсь вставить CCSprite между двумя слоями карты, которые с точки зрения CCScene на самом деле являются просто двумя частями одного слоя.

Кажется, я мог бы создать дополнительный экземпляр CCTMXTiledMap просто для того, чтобы удерживать слой переднего плана, но это также кажется излишним.Моя другая мысль состояла в том, чтобы создать CCSprites для той же цели, но кажется, что должен быть лучший способ.

1 Ответ

1 голос
/ 13 сентября 2011

Да, я однажды использовал Tiled очень легко, и я верю, что есть возможность добавить слой объектов в TMXTiledMap (Tiled -> Layer -> Add Object Layer ...), а затем импортировать в вашу сборку. может связать CCSprite с соответствующим слоем объектов, который вы создали. Я хотел бы опубликовать ваш вопрос на форуме cocos2d, так как люди там более опытны и готовы ответить на это примерами.

...