Tratando de acceder a la class desde GameLayer

Tengo una class personalizada "LinkWithNumber" con tres sprites y en GameLayer en actualización estoy tratando de probar CGRectContainsRect para colisiones, pero estoy teniendo problemas para tratar de acceder al sprite en el file de class (no tengo mucha experiencia, lo más probable Estoy arruinando: P)

He probado lo siguiente:

LinkWithNumber.h

@interface LinkWithNumber : SKSpriteNode <SKPhysicsContactDelegate> { SKSpriteNode *collide; } 

LinkWithNumber.m

 @synthesize collide; //add collision object to the class collide = [[SKSpriteNode alloc]initWithColor:[SKColor blueColor] ...blah blah as normal [self addChild:collide]; collide.name = @"collide"; 

GameLayer.h

 @class LinkWithNumber; @interface GameScene : SKScene <SKPhysicsContactDelegate> { LinkWithNumber* twoSpritesWithParticlesBridge; } @property (nonatomic, strong)LinkWithNumber* twoSpritesWithParticlesBridge; 

GameLayer.m

 @synthesize twoSpritesWithParticlesBridge; -(void)addStaticLinkedSpriteWithParticles { twoSpritesWithParticlesBridge = [[LinkWithNumber alloc]initWithlinkSpriteA:@"RoseMine06" spriteB:@"RoseMine06" andPlistAnimation:@"need to create animations" distbetween:300 hasParticles:YES ParticlesNamed:@"Fire"]; [self addChild:self->twoSpritesWithParticlesBridge]; twoSpritesWithParticlesBridge.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize: twoSpritesWithParticlesBridge.frame.size]; } -(void)update:(CFTimeInterval)currentTime { LinkWithNumber *currentSprite = (LinkWithNumber*)[self childNodeWithName:@"collide"]; //NSLog(@"currentSprite Name @%@", currentSprite); //gets nil if (CGRectContainsRect(myShip02.frame,currentSprite.frame)) { NSLog(@"Hit barrier can pass"); } } Any help would be appreciated :) 

Cómo ubicar su object de class … ¡La solución, gracias a 0x141E!

  //name it on setup inside your customCLass //eg yourObject.name = @"collide"; //Now in Gamelayer locate your object by recursive search //it will look for any object named @"//collide" //without the slashes it will only look on the game layer //but since we need to dig a bit further we need them! LinkWithNumber *currentSprite = (LinkWithNumber*)[self childNodeWithName:@"//collide"]; NSLog(@"LinkWithNumber is %@",NSStringFromClass([currentSprite class])); //do something with your object if (currentSprite.position.y >0 ) { NSLog(@"currentSprite Position %f",currentSprite.position.y); } 

extras

Sknode Class ref para otras funciones de búsqueda

Cómo enumerar todos los nodos

Veo dos problemas …

  1. Está buscando solo el nodo raíz (en este caso, la escena) para el nodo denominado "colisionar", pero ese nodo es un nodo secundario del nodo LinkWithNumber que no es la escena. Para search recursivamente todo el tree de nodos, use @"//collide"
  2. Está lanzando el resultado de la búsqueda a un puntero LinkWithNumber , pero collide es un SKSpriteNode no un LinkWithNumber .