2016-09-13 1 views
1

// Очень вероятно, ошибка nubby ... столкновений работать, если перетащить плитки ударов TargetNodeCatagoryT1 но как установить BOOL на объект-хит?Узел SKPhysics и как отправить BOOL для исправления объекта

if (firstBody.categoryBitMask == DragTileCategory && 
    secondBody.categoryBitMask == TargetNodeCatagoryT1){ 

    TargetNode *hitNode = (TargetNode *) secondBody.node; 
    hitNode.hasHitT1 = YES; <<this crashes app 
    but I wish to send BOOl back... 
} 

ERROR LOG: нагрузочного приложение из-за неперехваченного исключением 'NSInvalidArgumentException', причина: «- [SKSpriteNode setHasHitT1]: непризнанные селектор направлен например

Thank's Knight0fDragon You are right, the "hitNode" are SKSpriteNodes 
nested within the TargetNode class - each TargetClass has 3 targets, 


BOOLS are declared in .h and synthesised in .m 
    @interface TargetNode : SKNode 
    BOOL hasHitTarget1; 
    BOOL hasHitTarget2; 
    BOOL hasHitTTarget3; 

//later 
    @property (nonatomic,assign) BOOL hasHitTarget1; 
    @property (nonatomic,assign) BOOL hasHitTarget2; 
    @property (nonatomic,assign) BOOL hasHitTarget3; 

@implementation TargetNode 
@synthesize hasHitTarget1,hasHitTarget2,hasHitTarget3; 

-(id)initWithImageNamed:(NSString*)imageName labelText:(NSString*)labelText 
other stuff here....then 

    hasHitTarget1 = NO; 
    hasHitTarget2 = NO; 
    hasHitTarget3 = NO; 

enter image description here

У нее есть работа: прилагается физикаBody к ярлыку Я хочу чанг e later (физикаBody была немного похожа на маркер, если бы я мог найти второй код. Я бы мог изменить текст ... возможно, это не самый лучший способ, но он работал для моих целей :)

// креплении physicsBody например T1label.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize ...

// нахождение объекта secondBody

В didMakeContact secondBody.categoryBitMask == TargetNodeCatagoryT1) {

//Convert second body into useable object 
    SKLabelNode *hitNode = (SKLabelNode *) secondBody.node; 

    //change text 
    hitNode.text [email protected]"test"; 

    NSLog(@"TargetNode [email protected]%@",hitNode.name); 

    //Test type of object 
    NSLog(@"hitNode isMemberOfClass TargetNode: %@", [hitNode isMemberOfClass:[TargetNode class]] ? @"YES":@"NO"); 
    NSLog(@"hitNode isMemberOfClass SKSpriteNode: %@", [hitNode isKindOfClass:[SKLabelNode class]] ? @"YES":@"NO"); 
} 

ответ

1

Это не так, потому что ваш hitNode НЕ TargetNode, даже если вы утверждаете, что это так. Используйте [hitNode isKindOfClass:] или [hitNode isMemberOfClass:], чтобы подтвердить, что такое hitNode.

Единственная другая проблема в том, что вы не создать свою собственность правильно, или это не синтез для вас, и setHasHitT1 никогда не был создан таким образом hitNode.hasHitT1 = YES; терпит неудачу

+0

Привет Knight0fDragon, спасибо, добавил выше код Hitnode является SKSpriteNode внутри класса TargetNode BOOL не работает - вы добавили код, возможно, вы можете увидеть, где я ошибся ... – StackBuddy

+1

whoa whoa whoa, почему targetnode your physicalcontactdelegate, ваша сцена должна делать это – Knight0fDragon

+0

приятно знать, исправлено , (теперь для bools) – StackBuddy

Смежные вопросы