Cocos2d-x将对象添加到等距tilemap

时间:2013-10-13 12:07:40

标签: cocos2d-x

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

Image

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

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

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

1 个答案:

答案 0 :(得分:0)

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

1-根据位置动态计算 z

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

3-具有较小 x y 合作伙伴的对象是上述项目。

所以在精灵之后添加以下代码:

tmpCastle->setAnchorPoint(0.5, 0);

int z = (TILEMAP_WIDTH - tmpCastle->getPositionX()) + (TILEMAP_HEIGHT
- tmpCastle->getPositionY());
tmpCastle->setZOrder(z);