2011-09-13 1 views
0

"Tiled"응용 프로그램으로 만든 TMX 맵을 광범위하게 사용하는 하향식 슈팅 게임을 만들고 있습니다. 내 TMX지도 내에서 내 캐릭터 (CCSprites.) 아래에 나타나는 바닥 글 타일이있는 "배경"레이어가 있습니다.두개의 CCTMXLayers 사이에 CCSprite를 쌓을 수 있습니까?

"Foreground"라는 TMX 파일에 "above"로 표시하려는 다른 레이어가 있습니다. 내 CCSprites, 다양한 환상의 물체 밑으로 걸어 다니는듯한 착각을 일으킨다.

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

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

을 ...하지만 vertexZ 실제로 OpenGL을보기 내에서 노드의 시각적 모양을 변경 밝혀 :

나는이 작업을 수행 할 CCNode 클래스의 vertexZ 속성을 사용했습니다. 결과적으로 CCNode가 더 커 보이거나 더 높은 vertexZ 값을 갖는에 더 가까운 사용자가 에 더 가깝게 보입니다. 나는 그것을 원하지 않는다. 내가 원한 것은 레이어 사이에 시각적 인 차이가없는, 일종의 극단적 인 얇은 케이크 효과이다.

그래서 나는이 같은 노드의 zOrder를 속성을 변경하려고 할 것이라고 생각 :

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

하지만 내 spriteNode가 직접 아이이기 때문에 내가 여기서 뭘하는지에 근본적인 문제가있다 실현 배경 및 전경 노드는 모두 내 CCTMXTiledMap의 하위 요소이며 자체 인은 CCScene의 하위 노드입니다.

그래서 기본적으로지도의 두 레이어 사이에 CCSprite를 놓으려고합니다.이 레이어는 CCScene의 관점에서 볼 때 실제로 같은 레이어의 두 부분입니다.

전경 층을 유지하기 위해 CCTMXTiledMap의 추가 인스턴스를 만들 수 있지만 과도한 것처럼 보입니다. 내 생각은 같은 목적을 위해 CCSprites를 만드는 것이지만, 더 좋은 방법이 될 것으로 보인다.

답변

1

네, 매우 가볍게 타일을 한 번 사용했습니다. TMXTiledMap (타일링 된 레이어 -> 레이어 추가 -)에 오브젝트 레이어를 추가하는 옵션이 있다고 생각합니다. 그런 다음 한 번 빌드로 가져 왔습니다. CCSprite를 생성 한 해당 Object Layer와 연결할 수 있습니다. 나는 cocos2d 포럼에 여러분의 질문을 게시 할 것입니다. 사람들은 경험이 풍부하고 예제를 가지고 이것을 대답 할 준비가되어 있기 때문입니다.

+1

흥미롭게도 필자는 CCFrites의 프레임 워크를 구성하는 개체가 포함 된 tmx 파일에 여러 개체 레이어가 있지만 개체 레이어와 연결할 수 있다는 것을 알지 못했습니다. 아무것도 나오지 않으면 저기에 게시 해 보겠습니다. 제안에 감사드립니다.하지만 솔직히 스택 오버플로를 사용한 후 일반 포럼으로 돌아가는 것은 매우 어렵습니다! – todd412

+0

동의합니다. 스택은 훌륭합니다. 단순히 틈새 시장이기 때문에 단순히 게시해야합니다. 행운을 빕니다 – Michael

+0

밝혀 졌을 때, 당신의 제안은 정답이었습니다 - 포럼에있는 사람들은 매우 도움이되었습니다, 감사합니다! – todd412

관련 문제