天天看点

cocos2dx中使用tiled地图实现sprite动态遮挡

精灵的遮挡效果:

cocos2dx中使用tiled地图实现sprite动态遮挡
cocos2dx中使用tiled地图实现sprite动态遮挡
cocos2dx中使用tiled地图实现sprite动态遮挡

理论:

1. tiled map 的 VertexZ 计算方法在int TMXLayer::getVertexZForPos(const Vec2& pos)

2。

地图方向选择正常,

cocos2dx中使用tiled地图实现sprite动态遮挡

VertexZ 的值是按行来计算。每一行的tile都是相同的VertexZ ,由上到下VertexZ值逐行递增。

3。tilemap的layer的 VertexZ值是默认为0的。需要在属性中设置

cocos2dx中使用tiled地图实现sprite动态遮挡

,才会为该layer的tile自动设置Z值,并且Z值小于0。

因此,其它layer也要手动设置小于0的z值。

cocos2dx中使用tiled地图实现sprite动态遮挡

4。 cocos2dx 需要开启openGL深度检测后,Z值排序才生效。director->setDepthTest(true);

5.通过给精灵设置PositionZ,则可以实现动态遮挡的效果。m_displayModule->getDisplayNode()->setPositionZ(ret);

无论精灵的parent是否是tilemap。

6。 精灵的PositionZ计算公式可以去TMXLayer::getVertexZForPos获得