iOS:设置速度不起作用sprite kit

时间:2014-04-19 16:23:39

标签: ios sprite-kit game-physics

我目前正在使用精灵套件制作应用。我试图在用户滑动时改变对象的速度。但是,即使调用该函数,速度也不会改变。 这是我的代码:

- (void)swipedUp {
    NSLog(@"swiped up!");
    _player.physicsBody.velocity = CGVectorMake(_player.physicsBody.velocity.dx, 200.0f);
}

我可以在更新功能中调用的另一个函数中更改速度:

-(void)update:(CFTimeInterval)currentTime {
    /* Called before each frame is rendered */

    _player = [self updatePlayer];

    [self moveBackgound];
}

- (SKNode *)updatePlayer {

    /* Create the node */

    SKNode *playerNode = [SKNode node];
    SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"Car_normal.png"];

    // dx > 0 => right ; dy > 0 => up
    _player.physicsBody.velocity = CGVectorMake(0.0f, 10.0f);


    if (_player.physicsBody.velocity.dy < 0.0f) {
        sprite = [SKSpriteNode spriteNodeWithImageNamed:@"Car_brake.png"];
    }

    [playerNode addChild:sprite];


    return playerNode;
}

在当前版本中,我删除了 在updatePlayer函数中_player.physicsBody.velocity = CGVectorMake(0.0f, 10.0f); ligne,但它仍然不会改变速度。

我还尝试使用boolean从swipedUp函数调用updatePlayer函数以确保我应该更改速度。再次,读取ligne但不应用速度变化。 我以前在另一个应用程序中有类似的问题来更改UILabel的文本。我用了[_player performSelector:<#(SEL)#> onThread:<#(NSThread *)#> withObject:<#(id)#> waitUntilDone:<#(BOOL)#>]。但是,我需要传递一个不是'id'类型的CGVector,所以我不能使用那段代码。

1 个答案:

答案 0 :(得分:0)

身体应该是动态的,然后只有physicsworld才允许施加速度。

<强> Swift3.0

_player.physicsBody.isDynamic = true