Попытка доступа к классу из GameLayer

У меня есть пользовательский класс «LinkWithNumber» с тремя спрайтами и на GameLayer в обновлении. Я пытаюсь проверить CGRectContainsRect для коллизий, но у меня возникли проблемы с попыткой получить доступ к спрайту в файле класса (у меня мало опыта, поэтому, скорее всего, Я испортил: P)

Я пробовал следующее:

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 :) 

Как найти объект класса … Решение, благодаря 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); } 

дополнительные услуги

Sknode Class ref для других функций поиска

Как перечислить все узлы

One Solution collect form web for “Попытка доступа к классу из GameLayer”

Я вижу два вопроса …

  1. Вы ищете только корневой узел (в данном случае сцену) для узла с именем «collide», но этот узел является дочерним LinkWithNumber узла LinkWithNumber не сценой. Чтобы рекурсивно выполнить поиск по всему дереву узлов, используйте @"//collide"
  2. Вы производите результат поиска указателю LinkWithNumber , но collide – это SKSpriteNode не LinkWithNumber .
  • SpriteKit, как получить правильный размер экрана
  • Приложение универсального устройства iOS с SpriteKit, как масштабировать узлы для всех просмотров?
  • Разрыв между SKSpriteNodes в обнаружении столкновения SpriteKit
  • Альтернатива `CACurrentMediaTime ()` для планирования событий в SpriteKit
  • Как получить высоту сцены в метрах (быстро)?
  • Как установить фоновое изображение для SKScene?
  • iOS SpriteKit Как сделать цвет инсульта прозрачным?
  • Изменение параметров SKPhysicsBody не влияет
  • SpriteKit - получение ближайших узлов
  • Проблема сравнения UIColors в Swift
  • Ошибка при попытке удалить узел из родителя с помощью быстрого перечисления
  • Нечеткое прокручивание SCSpriteNode?
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.