【问题标题】:Sprite Kit - movement of nodes with finger movementSprite Kit - 通过手指移动来移动节点
【发布时间】:2014-06-25 13:57:32
【问题描述】:

我正在尝试让我的SKSpriteNode 用我的手指平稳移动。我玩过很多游戏,似乎无论我的手指走多快,物体都会跟着我的手指走。但是使用我当前的代码,我会不断失去对对象的控制,提高速度也会失去对它的控制。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
     /* Called when a touch begins */

    for (UITouch *touch in touches) {
        CGPoint location = [touch locationInNode:self];
        SKSpriteNode *node = (SKSpriteNode *)[self nodeAtPoint:location];
        if (node.name != nil) {
            if (node.name == p1Name) {
                onP1 = true;
            }
            else if (node.name == p2Name) {
                onP2 = true;
            }
        }
    }
}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    for (UITouch *touch in touches) {
        CGPoint location = [touch locationInNode:self];
        CGPoint preLocation = [touch previousLocationInNode:self];
        SKSpriteNode *paddle = (SKSpriteNode *)[self nodeAtPoint:location];
       if (paddle.name != nil) {
            if ((paddle.name == p1Name && onP1) || (paddle.name == p2Name && onP2)) {
                int paddleX = paddle.position.x + (location.x - preLocation.x);
                paddleX = MAX(paddleX, paddle.size.width/2);
                paddleX = MIN(paddleX, self.size.width - paddle.size.width/2);
                paddle.position = CGPointMake(paddleX, paddle.position.y);
            }
        }
    }

}

如何让SKSpriteNode在我在屏幕上触摸和移动时用手指平滑移动?

【问题讨论】:

    标签: ios sprite-kit


    【解决方案1】:

    您的 touchesMoved 代码设置为仅当触摸在精灵上方时才移动精灵。因此,只要您快速移动手指,该代码就不会执行,因为触摸下方没有节点。您需要在 touchesBegan 期间将“当前触摸的”精灵设置为属性,然后在触摸移动期间对其进行操作,或者在您的 touchesMoved 方法中创建不同的逻辑。

    【讨论】:

    • 所以我不应该在touchesMoved方法中得到我触摸下的节点,而直接从我的touchesBegan方法中获取paddle对象?
    • 我不知道你的游戏的细节,但这是我概述的第一个选项。您可以简单地删除在 touchesMoved 中对 sprite 的签入,并简单地使用您在 touchesBegan 中设置的 paddle1 或 paddle2 的布尔值作为 touchesMoved 中的唯一签入。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多