我正在使用cocos2d-x制作等距地图游戏(它类似于帝国时代的游戏,但更简单)。我有资源,树木等“默认”地图,用户应该能够将新对象(建筑物)放置到地图上。并且存在一个问题:z对象的顺序。当我添加新对象时,它会覆盖地图上的所有图块:
用户添加的建筑物(农场)不应该越过树,因为它“在它后面”。我正在将新对象添加到地图中作为子拼图来平铺地图:
CCSprite* tmpCastle=CCSprite::create("castleMenu.png");
tmpCastle->setPosition(touchLocation);
tileMap->addChild(tmpCastle);
我不知道如何解决这个问题。
答案 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);