2014-08-31 2 views
0

Я пытаюсь применить импульс к узлу спрайта в SK каждый раз, когда касаюсь, но ничего не происходит. Прикосновение регистрируется, но нет импульса.Импульс не применяется в комплекте Sprite

-(id)initWithSize:(CGSize)size {  
if (self = [super initWithSize:size]) { 
    /* Setup your scene here */ 

    self.backgroundColor = [SKColor colorWithRed:0.15 green:0.15 blue:0.3 alpha:1.0]; 
    self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame]; 

    SKSpriteNode *torso = [SKSpriteNode spriteNodeWithColor:[SKColor blueColor] size:CGSizeMake(40, 60)]; 
    torso.position = CGPointMake (250,250); 
    torso.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(40, 60)]; 
    torso.physicsBody.dynamic = YES; 

    [self addChild: torso]; 

    SKSpriteNode *arm = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:CGSizeMake(15, 50)]; 
    arm.position = CGPointMake (235,235); 
    arm.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(40, 60)]; 
    arm.physicsBody.dynamic = YES; 

    [self addChild: arm]; 

    SKPhysicsJointPin *leftArm = [SKPhysicsJointPin jointWithBodyA:torso.physicsBody bodyB:arm.physicsBody anchor:torso.position]; 
    [self.physicsWorld addJoint:leftArm]; 


    } 
    return self; 
} 

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 

    [_torso.physicsBody applyImpulse:CGVectorMake(12, 10)]; 
    NSLog(@"touch"); 
} 

Мой спрайт узел имеет другой узел, связанный с ним, но я попробовал импульс на него без дополнительного узла, и он по-прежнему не работает.

+1

Вы создаете новый экземпляр 'торса' в' initWithSize: ', но вы, кажется, никогда не устанавливаете' _torso' ни в чем. –

+0

@MikeS Если бы я не исправил это, как я и думал, исправление имени экземпляра ничего не изменило! – cocoamoco

+1

Что именно вы изменили? –

ответ

0

По какой-то причине, для того, чтобы переместить мой спрайт узел я должен был создать его как этот

_torso = [SKSpriteNode spriteNodeWithColor:[SKColor blueColor] size:CGSizeMake(40, 60)]; 

, а не

SKSpriteNode *torso = [SKSpriteNode spriteNodeWithColor:[SKColor blueColor] size:CGSizeMake(40, 60)]; 

После того, как я поставил точку останова и увидел, что _torso была равна нулю, Я упомянул о некоторых предыдущих работах и ​​увидел свою ошибку.

+0

Вы заявили торс как слабую переменную/свойство? Это объяснит это. – LearnCocos2D

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