Невозможно применить импульс к физическому телу SKSpriteNode

Я новичок в наборе спрайтов от xcode и пытаюсь применить импульс к SKSpriteNode's физическому телу. Вот как я создаю сцену:

self.backgroundColor = [SKColor colorWithRed:0 green:0 blue:0 alpha:1.0];
        self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
        self.physicsBody.friction = 0.0f;
        self.physicsWorld.gravity = CGVectorMake(0.0f, 0.0f);
        ballCategory = 1;
        wallCategory = 2;
        self.physicsBody.categoryBitMask = wallCategory;

Вот как я создаю плеер И даю ему импульс:

player = [SKSpriteNode spriteNodeWithImageNamed:filePath];
    player.size = CGSizeMake(100, 100);
    player.position = CGPointMake(150, 250);
    player.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:player.frame];
    player.physicsBody.categoryBitMask = ballCategory;
    player.physicsBody.collisionBitMask = wallCategory;
    player.physicsBody.friction = 0.0f;
    player.physicsBody.restitution = 1.0f;
    player.physicsBody.linearDamping = 0.0f;
    player.physicsBody.allowsRotation = NO;
    [self addChild:player];
        CGVector impulse = CGVectorMake(100,100);
        [player.physicsBody applyImpulse:impulse];

Есть ли что-то очевидное, что я упустил из-за того, что полностью следовал руководству по программированию iOS Developer Library Sprite Kit? Заранее спасибо за помощь!


person Lucas Bullen    schedule 16.01.2014    source источник


Ответы (1)


Вы создаете физическое тело игрока как граничное тело - оно всегда статично (неподвижно силами/импульсами). Вы должны изменить эту строку на:

player.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:player.frame.size];

В этом примере создается динамический объем на основе прямоугольника, на который будут воздействовать физические силы. Вы можете прочитать о типах физических тел здесь.

person Batalia    schedule 16.01.2014