使用块的Sprite-kit动作

时间:2015-04-14 00:39:45

标签: ios objective-c sprite-kit skaction

我有什么:

  • 您点击并将球移动到该位置。

  • 屏幕在上部和下部之间水平分割。降低。

  • 假设球在下方,你不能点击下方让它移动。您必须单击屏幕的顶部。关于上层或下层,这翻转。

我想要的是什么:

  • x coord完全没有变化。

  • 当球击中顶部时,它会改变方向并且只需点击一下就可以返回

  • 删除UITouch位置变量

  • 上下系统停留

    非常感谢你们。

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        /* Called when a touch begins */
        //SKAction *action = [SKAction rotateByAngle:M_PI duration:1];
        //[sprite runAction:[SKAction repeatActionForever:action]];
    
        for (UITouch *touch in touches) {
            location = [touch locationInNode:self];
        }
    
        float ballVelocity = self.frame.size.height/3.0;
        CGPoint moveDifference = CGPointMake(location.x - ball.position.x,location.y - ball.position.y);
        float distanceToMove = sqrtf(moveDifference.x * moveDifference.x +moveDifference.y * moveDifference.y);
        float moveDuration = distanceToMove / ballVelocity;
    
    
        Act_Move = [SKAction moveTo:location duration:moveDuration];
        Act_MoveDone = [SKAction runBlock:^(){
        NSLog(@"stoped");}];
        ActballMoveSeq = [SKAction sequence:@[Act_Move,Act_MoveDone]];
    
    
        if(((location.y>screenSize.height/2)&&(ball.position.y<screenSize.height/2))||((location.y<screenSize.height/2)&&(ball.position.y>screenSize.height/2))){
    
            if(canTap == true){
                [ball runAction:ActballMoveSeq withKey:@"moveBall_seq"];
            }
        }
    }
    

1 个答案:

答案 0 :(得分:2)

要让球向上移动一定距离并自行回归,请在节点上使用applyImpulse。

// modify the dy value (100) to whatever value suits your needs
[myNode.physicsBody applyImpulse:CGVectorMake(0, 100)];

只要您的节点受到重力的影响,它最终会重新降低。