Cocos2dx 3.17 TileMap Basic Sample-错误的tilecord位置,返回的对象层itmes位置也错误

时间:2018-08-25 18:11:43

标签: iphone xcode cocos2d-x cocos2d-x-3.17 tmxtiledmap

我尝试了here中的cocos2d TileMap示例,在此返回给定玩家位置的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也错误。因此碰撞不起作用。我从Ray Wenderlich网站的示例中使用了它

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

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

1 个答案:

答案 0 :(得分:0)

在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