代码之家  ›  专栏  ›  技术社区  ›  Guru

Cocos2dx 3.17 TileMap基本示例-tilecord位置错误,对象层itmes位置返回也错误

  •  2
  • Guru  · 技术社区  · 6 年前

    我试过cocos2d TileMap样本 here ,在这个tilecord中返回给给定的玩家位置是错误的。

    这是密码

    Point HelloWorld::tileCoordForPosition(Point position)
    {
        int x = position.x / mTileMap->getTileSize().width;
        int y = ((mTileMap->getMapSize().height * mTileMap->getTileSize().height) - position.y) / mTileMap->getTileSize().height;
        return Point(x, y);
    }
    

    这是地图截图 enter image description here

    同样,tileCord返回错误。所以碰撞不起作用。我用的是雷·温德里奇网站的样本

    这是完整的示例代码 https://app.box.com/s/whunv70tstwxbgzxdvxfeu080y6gwucb

    如果有人有时间,请检查一下,帮我找出错误。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Guru    6 年前

    在cocos2dx 3.17中,返回的繁殖点正好是一半,相同的tileMap在Cocos2d ObjC项目中返回正确的值。所以临时的解决方法是将tileCoordForPosition中的输入值乘以2。这是暂时的解决方案…仍在等待正确的解决方案。

    Point HelloWorld::tileCoordForPosition(Point position)
    {
        Point newPos = Vec2(position.x*2, position.y*2);
    
        int x = newPos.x / mTileMap->getTileSize().width;
        int y = ((mTileMap->getMapSize().height * mTileMap->getTileSize().height) - newPos.y) / mTileMap->getTileSize().height;
        return Point(x, y);
    }
    

    以下是完整的工作TileMap示例: https://app.box.com/s/r3kglzbx6naig896bq4my7opfeg6ftwz