Плиточная карта Cocos2d добавляет спрайты - PullRequest
2 голосов
/ 09 декабря 2010

В примере z-упорядочения изометрической мозаичной карты для cocos2d-iphone они используют объект, уже находящийся в карте тайла, в качестве спрайта игрока, который отображается как перемещение по деревьям.

Есть лиспособ использовать случайный CCNode, созданный через код (не в файле tmx и не в части таблицы спрайтов), и правильно ли он z-упорядочен с помощью карты тайлов?addChild не поддерживается на CCTMXLayer, и при использовании выдает ошибку, которая гласит: 'addChild: is not supported on CCTMXLayer. Instead use setTileGID:at:/tileAt:'.

Должен быть способ получить CCNode (скажем, простое CCSprite) правильно упорядочить z с помощью тайла карты, используя API-интерфейс cocos2d или какую-либо технику z-буфера.Есть указатели?

Ответы [ 2 ]

3 голосов
/ 21 августа 2013

Если вы хотите добавить плитку, чтобы сказать плитку (x, y) ((x, y) в координатах редактора Tiled Map), используйте следующий код -

myTileMap является ссылкой на объект CCTMXTiledMap.

CCTMXLayer *layer=[myTileMap layerNamed:@"yourlayer"];
NSAssert(floorLayer !=nil, @"Ground layer not found!");    
CGPoint tileAddPosition = [layer positionAt: CGPointMake(x,y)];

//Create your CCNode or CCSprite or whatever...say object name is **tileToBeAdded**

tileToBeAdded.anchorPoint = CGPointZero;
tileToBeAdded.position = tileAddPosition;
[myTileMap addChild:addedTile z:1];
3 голосов
/ 10 декабря 2010

CCTMXLayer не поддерживает добавление плиток во время выполнения, потому что он реализован со всеми спрайтами в одной таблице спрайтов.Из-за этой детали реализации вы также не можете вызвать setTexture для отдельной плитки.

Самым простым решением было бы иметь спрайт, который вы хотите использовать, в самом начале.Если вы не можете сделать это, потому что он сгенерирован во время выполнения или чего-то еще, следующая лучшая вещь (не касаясь кода cocos2d) - это изменить таблицу спрайтов.

Поместите фиктивную плитку в таблицу спрайтов, которую вы используете для TMXLayer, и затем, когда у вас будет изображение, которое вы хотите использовать, запишите его в таблицу спрайтов, используя CCRenderTexture или что-то еще, и используйте вновь созданную текстуру в качествеТекстура TMXLayer.

Вы также можете изменить CCTMXLayer, чтобы учесть ваши функциональные возможности, но, похоже, вы хотите этого избежать.

...