Cocos2D: ссылка на класс TMXLayer из другого класса - PullRequest
0 голосов
/ 03 мая 2011

Использование Cocos2D.В настоящее время я разделил большую часть спрайта и поведения игрока от карты отладки, и теперь у меня возникают проблемы со ссылкой на TMXLayer из класса спрайта.Я попытался выделить экземпляр класса DebugZoneLayer внутри этого метода из класса sprite и выпустить его со странными результатами.Это компилируется без ошибок, но не в состоянии проверить if (blocksCollidableGID | blocksCollidable2GID) { условно, потому что debugZoneLayer.blocksCollidable сейчас ничего не значит для этого метода.

Метод внутри класса sprite:

-(BOOL) checkTileCollisionForStrafing:(NSString*)omit{

    for(int j = 0; j < _collisPushPointsNums; j++){

        NSValue *val = [_collisPushPoints objectAtIndex:j];
        CGPoint p = [val CGPointValue];

        CGPoint tileCoord;



        if(omit==@"y"){
            tileCoord = [debugZoneLayer tileCoordForPosition:ccp(_heroSprite.position.x+_vel.x+p.x, _heroSprite.position.y+(p.y+.001))];
        }else{
            tileCoord = [debugZoneLayer tileCoordForPosition:ccp(_heroSprite.position.x+p.x, _heroSprite.position.y+_vel.y+p.y)];
        }

        int     blocksCollidableGID  = [debugZoneLayer.blocksCollidable  tileGIDAt:tileCoord];
        int     blocksCollidable2GID = [debugZoneLayer.blocksCollidable2 tileGIDAt:tileCoord];



        if (blocksCollidableGID | blocksCollidable2GID){
            NSLog(@"j = %i", j);
            return YES;
        }
    }

    return NO;
}
...