2

我从这里尝试了 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);
}

这是地图截图 在此处输入图像描述

返回的 tileCord 也是错误的。所以碰撞不起作用。我从 Ray Wenderlich 网站的样本中使用它

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

如果有人有时间,请检查它并请帮助我找到错误。

4

1 回答 1

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

于 2018-09-07T13:59:26.227 回答