Zooming and scrolling in SpriteKit

前端 未结 5 486
一整个雨季
一整个雨季 2020-12-02 17:43

I am new to SpriteKit. I need to display an image via UIImageView OR SpriteNode (it is a background image for a game). However, I need the user to be able to zoom in to the

5条回答
  •  心在旅途
    2020-12-02 18:26

    I have created my own method for zooming a specific node without having to zoom the entire scene and this is the basics of it, however it is not perfect (and in fact I have created its own help request here: Zooming an SKNode inconsistent )

    This if statement goes in the touchesMoved method of the scene:

       if (touches.count == 2) {
            // this means there are two fingers on the screen
            NSArray *fingers = [touches allObjects];
            CGPoint fingOneCurr = [fingers[0] locationInNode:self];
            CGPoint fingOnePrev = [fingers[0] previousLocationInNode:self];
            CGPoint fingTwoCurr = [fingers[1] locationInNode:self];
            CGPoint fingTwoPrev = [fingers[1] previousLocationInNode:self];
    
            BOOL yPinch = fingOneCurr.y > fingOnePrev.y && fingTwoCurr.y < fingTwoPrev.y;
            BOOL yUnpinch = fingOneCurr.y < fingOnePrev.y && fingTwoCurr.y > fingTwoPrev.y;
    
            BOOL xPinch = fingOneCurr.x > fingOnePrev.x && fingTwoCurr.x < fingTwoPrev.x;
            BOOL xUnpinch = fingOneCurr.x < fingOnePrev.x && fingTwoCurr.x > fingTwoPrev.x;
    
            if (xUnpinch | yUnpinch) {
                if (YES) NSLog(@"This means an unpinch is happening");
                mapScale = mapScale +.02;
                [map setScale:mapScale];
            }
    
            if (xPinch | yPinch) {
                if (YES) NSLog(@"This means a pinch is happening");
                mapScale = mapScale - .02;
                [map setScale:mapScale];
            }
        }
    

    The only problem I am having with it is inconsistent behavior and unsmooth scrolling. I use the word 'only' in that sense with great liberalness.

提交回复
热议问题