我是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;
}
}
答案 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表示碰撞。