Cocos2D - 碰撞检测getTileGIDAt

时间:2015-12-22 02:25:47

标签: cocos2d-iphone cocos2d-x tiled

我几天来一直坚持这个问题。我希望你们能帮助我。我正在按照本教程创建一个简单的游戏:http://discuss.cocos2d-x.org/t/tutorial-series-use-the-cocos2d-x-3-0-game-engine-write-a-tile-map-game-part02/12991

我被困在碰撞检测部分。方法getTileGIDAt()总是返回0,很可能我发现这是一个Tiled相关的问题(也许瓷砖不在那里等),但问题是瓷砖完全没问题。除了这个例外,所有东西都能顺利运行和加载。

谢谢!

这是代码:

void HelloWorld::setPlayerPosition(Point position)
{
    Point tileCoord = this->tileCoordForPosition(position);
    int tileGid = _blockage->getTileGIDAt(tileCoord);
    if (tileGid) {
        auto properties = _tileMap->getPropertiesForGID(tileGid).asValueMap();
        if (!properties.empty()) {
            auto collision = properties["Blockage"].asString();
            if ("True" == collision) {
                return;
            }
        }
    }
    _player->setPosition(position);
}

1 个答案:

答案 0 :(得分:0)

我会尝试本教程,看看您的代码是如何匹配的。我想主要的是检查你是否正确设置了不同层的Tiled设置。

http://www.raywenderlich.com/29458/how-to-make-a-tile-based-game-with-cocos2d-2-x