不能在didBeginContact中应用冲动

时间:2014-05-23 13:16:22

标签: ios sprite-kit

我试图用sprite-kit制作我自己的游戏,但也有一些麻烦。我想要的是将精灵称为"太空船"与"平台"互动如果velocity.dy分量> 1,则为精灵。 0.太空飞船在与平台接触后必须有额外的冲动。所以,有我的问题:
1)为什么我不能用applyImpulse对身体施加冲动?联系人类别很好,NSLog正常工作 2)如何在不进行投影的情况下获得contact.collisionImpulse(CGFloat类型)的x和y分量?
提前致谢。这是我的代码

- (void)didBeginContact:(SKPhysicsContact *)contact    
{
if (_spaceship.physicsBody.velocity.dy >= 0) {
    NSLog(@"y>0");
}
else {

uint32_t collision = (contact.bodyA.categoryBitMask |
                      contact.bodyB.categoryBitMask);
if (collision == (CNPhysicsCategorySpaceship|CNPhysicsCategoryPlatform))
{
    NSLog(@"y<0");
    SKPhysicsBody *firstBody, *secondBody;
    firstBody = contact.bodyA;
    secondBody = contact.bodyB;
    SKSpriteNode *firstNode = (SKSpriteNode *) firstBody.node;
    SKSpriteNode *secondNode = (SKSpriteNode *) secondBody.node;

    if (firstNode.name == PlatformCategoryName) {
            [_spaceship.physicsBody applyImpulse:CGVectorMake(0, 1000)];
            [firstNode removeFromParent];
            NSLog(@"aaaa");
    }
    else {
            [_spaceship.physicsBody applyImpulse:CGVectorMake(0, 1000)];
            [secondNode removeFromParent];
            NSLog(@"bbbb");
        }
    }
}
}

0 个答案:

没有答案