如何在滚动tile map期间检测tile和sprite之间的冲突?

时间:2012-06-26 11:51:39

标签: iphone objective-c ios cocos2d-iphone

我是cocos2d的新手,现在我被困在平铺地图学习中。我想检测精灵和滚动平铺地图图层之间的碰撞。在平铺地图图层中我还在平铺图块中设置了特定的平铺值1 properties.problem是这样的,当我与精灵碰撞并且我的精灵位于固定位置时,如何检测到瓷砖的碰撞或坐标?

-(void)Collision:(ccTime)delta{

CGPoint playerPosition=player.position;
CGPoint tileCoordPos = [self tileCoordForPosition:playerPosition]; 
bool isTouchOnWater = NO;


int tileGID = [FloorLayer tileGIDAt:tileCoordPos];

if (tileGID != 0)
{
    NSDictionary* properties = [tileMap propertiesForGID:tileGID];
    if (properties)
    {
        CCLOG(@"NSDictionary 'properties' contains:\n%@", properties);
        NSString* isWaterProperty = [properties valueForKey:@"isWater"];
        isTouchOnWater = ([isWaterProperty boolValue] == YES);
    }
}

if (isTouchOnWater)
{
    [[SimpleAudioEngine sharedEngine] playEffect:@"alien-sfx.caf"];
    [FloorLayer removeTileAt:tileCoordPos];
}

}

这是我正在使用的代码。在此代码中,tile的坐标保持不变。

1 个答案:

答案 0 :(得分:2)

我通过滚动整个地图解决问题,并制作两个地图,一个用于地面层,另一个用于物体,然后检测碰撞......它对我来说非常适合