`
song020cn
  • 浏览: 61870 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

根据TileMap坐标系统一设定ZOrder

阅读更多

游戏中,我们常常要处理场景中Sprite的前后遮挡关系。

以下公式根据TileMap坐标来动态计算ZOrder,来确保正确的遮挡关系。

为了计算的高效率,使用了位移来代替乘法运算。

        // 最小左位移
        int shifting = 6;
        int height = map->getMapHeight();
        if (height > 512) {
            // 超过2^8
            shifting = 10;
        }else if (height > 256) {
            // 超过2^7
            shifting = 9;
        }else if (height > 128) {
            // 超过2^6
            shifting = 8;
        }else if (height > 64) {
            // 超过2^5
            shifting = 7;
        }
        // 根据TileMap坐标系来确定ZOrder
        _sprite->setZOrder((posTile.x + posTile.y) - (map->getMapWidth() << shifting));

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics