2014-02-12 2 views
5

Ich habe ein Objekt in meiner Szene. Wenn ich den Bildschirm berühre, möchte ich, dass die y-Position des Objekts zur y-Position meiner Berührung wird. Dafür habe ich den folgenden Code:Sprite Kit - Objekt in die Position der Berührung bewegen

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

    SKNode *player = [self childNodeWithName:@"player"]; 

    UITouch *touch = [touches anyObject]; 
    CGPoint positionInScene = [touch locationInNode:self]; 
    player.position = CGPointMake(player.position.x, positionInScene.y); 
} 

Es funktioniert mit diesem Code, aber wie bekomme ich das Objekt auf die Berührung y-Position mit einer konstanten Geschwindigkeit zu bewegen? Anstatt also auf die Touch-Y-Position zu springen, bewegen Sie sich mit einer vordefinierten Geschwindigkeit dorthin.

Antwort

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

    SKNode *player = [self childNodeWithName:@"player"]; 

    UITouch *touch = [touches anyObject]; 
    CGPoint positionInScene = [touch locationInNode:self]; 

    // Determine speed 
int minDuration = 2.0; 
int maxDuration = 4.0; 
int rangeDuration = maxDuration - minDuration; 
int actualDuration = (arc4random() % rangeDuration) + minDuration; 

// Create the actions 
SKAction * actionMove = [SKAction moveTo:CGPointMake(player.position.x, positionInScene.y); duration:actualDuration]; 
[player runAction:actionMove]; 

} 
+0

Sorry, aber das scheint nicht zu funktionieren. Ich sehe überhaupt keine Veränderungen. – user2255273

+1

Versuchen Sie den Code, den ich bearbeitet habe. – Mika

+1

Vielen Dank! Ich habe eine kleine Änderung vorgenommen (siehe Bearbeiten) und es funktioniert. Du bist der beste! – user2255273