2013-12-15 4 views
0

타일링 된 소프트웨어를 사용하여 생성 된 400x400 타일 맵을로드 중입니다. 하나의 타일은 총 48000x48000 픽셀에 대해 120 픽셀입니다. 이cocos2d-x를 사용하여 큰 타일 맵을 스크롤하면 녹색 타일이 있어야하는 곳에 검은 타일이 표시됩니다.

regionMap->initWithTMXFile("background2.tmx"); 
    mapLayer->addChild(regionMap, 0, enTagTileMap); 
    mapLayer->setAnchorPoint(CCPoint(0,1)); 

가 그럼 난 이렇게 스크롤 같은

나는로드합니다. 나는 수직이 위치에 대해로 스크롤하면

mapLayer->setPosition(position); 

것은, 나는 그냥 검은 타일을 얻을, 더 이상지도에서 타일을하지 않습니다.

x=0 , y=5483.748535 

가로로 스크롤하면이 위치에 도달해도 같은 문제가 발생하지 않습니다.

x=-48000, y=400 

미리 감사드립니다.

답변

1

저는 cocos2d-x의 타일 맵 렌더러가 cocos2d-iphone의 직접 포트라고 가정하는 것이 합리적이라고 생각합니다. true 인 경우, 둘 다 표시 할 수있는 최대 65,536 개의 정점 (16,384 타일)에 대해 동일한 제한이 있습니다 (빈 타일을 포함하지 않음).

하나의 레이어 만 있고, "빈"타일이 없다고 가정하면 타일 맵은 400x400 = 160,000 타일입니다 (빈 == 타일 위치는 GID 값이 0 임). 이는 cocos2d가 렌더링 할 수있는 타일의 약 10 배를 의미합니다.

Cocos2d는 최대 16,384 개의 타일을 렌더링 한 다음 중지합니다. 나머지 타일은 렌더링되지 않으므로 배경색 (기본값 : 검정색)이 표시됩니다.

일반적이지만 어색한 해결 방법은 맵을 여러 TMX 파일로 분할하고 코드로 정렬하는 것입니다.

+0

대단히 감사합니다. 200x200 타일 맵을 사용하여 시도해 보았고 약 y = 80에서 렌더링을 중지합니다. 타일 ​​맵은 동일한 텍스처의 타일로 모두 채워지는 하나의 레이어를 포함합니다. 그래서 저는 cocos2d-x로 렌더링 할 수있는 타일 수가 65,536 개가 아니라 16,000 개 정도라고 생각했습니다. 125x125로 시도했지만 올바르게 작동했지만 믿기에는 너무 제한적입니다. 내가 뭔가 잘못하고 있는거야? – Abdalla

+0

죄송합니다. 그것은 65k 정점이지만 각 타일에는 4 개의 정점이있어서 16k 타일을 만듭니다. – LearnCocos2D

+0

OK, 고맙습니다. – Abdalla

관련 문제