在cocos2d-x

时间:2015-04-22 11:24:50

标签: xcode cocos2d-iphone cocos2d-x cocos2d-x-3.0

我是cocos2d-x3.2中的新手,我正在创建一个类似马里奥的基于磁贴的游戏。我创建了一个带有可碰撞图层的平铺贴图。但是当我使用Dictionary *properties;时,它在字典中显示错误。那么我可以用什么来检测碰撞?

Point tileCoord = this->tileCoordForPosition(position);

int tileGid = CollisionLAyer->tileGIDAt(tileCoord);

if (tileGid) {

    Dictionary *properties;
    properties = _tileMap->propertiesForGID(tileGid);
    if (properties) {
        String *collision = new CCString();
        *collision = *properties->valueForKey("Collidable");
        if (collision && (collision->compare("True") == 0)) {
            return;
        }
    }

1 个答案:

答案 0 :(得分:2)

使用3.2我相信属性是在ValueMap中创建的。

Value properties = this->getPropertiesForGID(0);
if (! properties.isNull())
{
    ValueMap dict = properties.asValueMap();
    Value collision = dict["Collidable"];
    if (! collision.isNull() && collision.asString() == "True") {
        return;
    }
}

如果需要,您还可以使用其他切片图层,例如使用红色半透明单个图块图块集。绘制应该是碰撞图块的所有图块。然后,您可以检查该图层上的gid是否为> 0表示碰撞。