2014-04-19 36 views
1

我目前正在使用精靈套件製作應用程序。我試圖在用戶向上滑動時更改對象的速度。但是,即使函數被調用,速度也不會改變。 這裏是我的代碼:iOS:設置速度不起作用精靈套件

- (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 ,但它仍然不會改變速度。

我也嘗試從swipedUp函數中使用布爾值來調用updatePlayer函數,以確保我應該改變速度。再次,ligne被讀取,但速度變化不被應用。 我以前在另一個應用程序中有類似的問題來更改UILabel的文本。我用[_player performSelector:<#(SEL)#> onThread:<#(NSThread *)#> withObject:<#(id)#> waitUntilDone:<#(BOOL)#>]。但是,我需要傳遞一個不是'id'類型的CGVector,所以我不能使用這個代碼。

+0

爲什麼要創建每一幀上一個新的球員?每次更新:被稱爲你正在創建_player並將其放置在場景中。這將永遠不會工作 –

+0

我這樣做是爲了改變_player的圖像。 – user3079660

+0

身體應該是動態的,那麼只有物理學會應用速度。 – balagurubaran

回答

0

身體應該是動態的,那麼只有物理世界將允許應用速度。

Swift3.0

_player.physicsBody.isDynamic = true