Cocos2d-x将对象添加到等轴测平铺贴图

Cocos2d-x将对象添加到等轴测平铺贴图,cocos2d-x,Cocos2d X,我正在用cocos2d-x制作一个等距地图游戏(它有点像《帝国时代》游戏,但更简单)。我有“默认”地图资源,树木等,用户应该能够放置新的对象(建筑物)的地图。还有一个问题:物体的z顺序。添加新对象时,它将覆盖地图上的所有平铺: 用户添加的建筑(农场)不应该越过树,因为它在树的“后面”。我正在将新对象作为子精灵添加到贴图的平铺贴图中: CCSprite* tmpCastle=CCSprite::create("castleMenu.png"); tmpCastle->setPosition

我正在用cocos2d-x制作一个等距地图游戏(它有点像《帝国时代》游戏,但更简单)。我有“默认”地图资源,树木等,用户应该能够放置新的对象(建筑物)的地图。还有一个问题:物体的z顺序。添加新对象时,它将覆盖地图上的所有平铺:

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

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

我不知道怎么解决这个问题

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

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);