为Tiled上的图层指定碰撞属性并在Cocos2D中使用它们

时间:2011-04-06 17:31:51

标签: iphone cocos2d-iphone collision-detection layer

我最近在Cocos2D中使用了一个关于碰撞检测的教程,用于在平铺中创建的tmx文件:http://www.raywenderlich.com/1186/collisions-and-collectables-how-to-make-a-tile-based-game-with-cocos2d-part-2

虽然这对我非常有用,但我希望能够检测整个图层上图块的碰撞属性,而不仅仅是检测单个图块上的碰撞属性。

我在Tiled上发现你可以右键单击一个图层并像使用单个图块一样分配属性。

在我的代码中的方法内部,我有一种检查tile的属性的方法:

CGPoint tileCoord = [self tileCoordForPosition:position];

int tileGid = [invisiblePropertiesLayer tileGIDAt:tileCoord];

if(tileGid){
    NSDictionary *properties = [theMap propertiesForGID:tileGid];

    if(properties){
        NSString *collision = [properties valueForKey:@"collidable"];
        if(collision && [collision compare:@"true"] == NSOrderedSame) {
            return;
        }
    }
}

有没有办法可以改变它来检查我是否在特定图层上碰撞任何图块?谢谢!

1 个答案:

答案 0 :(得分:0)

其他人告诉我如何在另一个论坛上这样做。这很容易:

    CGPoint tileCoord = [self tileCoordForPosition:position];

int tileGid = [blocksCollidable tileGIDAt:tileCoord];

if (tileGid)
    return;