1

我正在使用 cocos2d-x 制作带有等距地图的游戏(这有点像帝国时代的游戏,但更简单)。我有资源、树木等的“默认”地图,用户应该能够将新对象(建筑物)放置到地图上。还有一个问题:对象的 z 顺序。当我添加新对象时,它会遍历地图上的所有图块:

图片

用户添加的建筑物(农场)不应该越过树,因为它在“后面”。我将新对象作为子精灵添加到地图中:

CCSprite* tmpCastle=CCSprite::create("castleMenu.png");
tmpCastle->setPosition(touchLocation);
tileMap->addChild(tmpCastle);

我不知道如何解决这个问题。

4

1 回答 1

0

我在几个月前开发的一个项目中遇到了类似的问题。我就是这样解决的:

1-根据他们的位置动态计算z 。

2- 将锚点设置为ccp(0.5, 0)(因为大多数项目从中心底部开始,例如树)

3- 具有较小xy坐标的对象是上述项目。

因此,在您的精灵之后添加以下代码:

tmpCastle->setAnchorPoint(0.5, 0);

int z = (TILEMAP_WIDTH - tmpCastle->getPositionX()) + (TILEMAP_HEIGHT
- tmpCastle->getPositionY());
tmpCastle->setZOrder(z);
于 2013-10-13T19:20:28.097 回答