Я пытаюсь добавить Sprite рядом с игроком, но только когда Плитка рядом с игроком НЕ является Стеной. Я знаю, что Плиточные плитки работают должным образом, так как они выполняют свою работу в этом методе:Добавление CCSprite на свойства плиточной черепицы
CGPoint p = CGPointMake(tileCoord.x, tileCoord.y - 1);
if ([self isValidTileCoord:p] && ![self isWallAtTileCoord:p]) {
[tmp addObject:[NSValue valueWithCGPoint:p]];
t = YES;
Я проверка Tiled по координате с этими двумя методами:
-(BOOL)isProp:(NSString*)prop atTileCoord:(CGPoint)tileCoord forLayer:(CCTMXLayer *)layer {
if (![self isValidTileCoord:tileCoord]) return NO;
int gid = [layer tileGIDAt:tileCoord];
NSDictionary * properties = [_tileMap propertiesForGID:gid];
if (properties == nil) return NO;
return [properties objectForKey:prop] != nil;
}
-(BOOL)isWallAtTileCoord:(CGPoint)tileCoord {
return [self isProp:@"Wall" atTileCoord:tileCoord forLayer:_bgLayer];
}
(Спасибо RayWenderlich)
И мой код для добавления спрайта
CGPoint tileCoord = ccp(_player.position.x - 24 +60, player.position.y);
CGPoint cTileCoord = [self tileCoordForPosition:tileCoord];
NSLog(@" t: %@, c: %@",
CGPointCreateDictionaryRepresentation(tileCoord),
CGPointCreateDictionaryRepresentation(cTileCoord)
);
if (![self isWallAtTileCoord:cTileCoord])
{
NSLog(@"False");
circle1.position = ccp(_player.position.x - 24 +60, _player.position.y);
[self addChild:circle1];
}
else
{
NSLog(@"True");
}
То, что я хочу, чтобы это сделать добавьте только Circle1
спрайт слева от плеера, если там нет плитки Wall
. Проблема в том, что этот код всегда обнаруживает ложь, независимо от того, есть ли там стена или нет. Любой из вас, ребята, понимает, почему он не обнаруживает стены должным образом и как я могу это исправить?
Ну, чтобы спросить очевидное, проверили ли вы, чтобы ваши «стены» были на «_bgLayer» и что они имеют точное свойство «Wall» установить значение True? – stenger96
И если это так, я бы NSLog позицию, в которой вы пытаетесь добавить спрайт (не координаты точки плитки), а затем NSLog координаты точки плитки, которая проходит проверку в 'isProp'. – stenger96
@ stenger96 Все это записывает то же самое .. http://pastebin.com/10AqetvC –