not good but great

プログラミング、アート、映画・本の感想について書きます。

スワイプで指で動かしたぶん、画像を移動させる


スワイプで画像を動かしてみた。

タッチ開始時の処理

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch = [touches anyObject];
    startPt = [touch locationInNode:self];
    
    SKNode *cat = [self childNodeWithName:@"cat"];
    startCatPosX = cat.position.x;
}

タッチが始まったときに、ネコの画像の位置をstartCatPosXに保持する。startPtはタッチした指の位置。

タッチ後移動した時の処理

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    if(touches.count == 1){
        UITouch *touch = [touches anyObject];
        CGPoint location = [touch locationInNode:self];
        
        SKNode *cat = [self childNodeWithName:@"cat"];
        
        //移動量を加算
        int posX = startCatPosX + (location.x - startPt.x);
        cat.position = CGPointMake(posX, CGRectGetMidY(self.frame) - 100);
        
        //壁の境界
        if(cat.position.x > SCREEN_RIGHT){
            cat.position = CGPointMake(SCREEN_RIGHT, CGRectGetMidY(self.frame) - 100);
        }else if (cat.position.x < SCREEN_LEFT){
            cat.position = CGPointMake(SCREEN_LEFT, CGRectGetMidY(self.frame) - 100);
        }
    }
}

移動量を計算している

posX = タッチ開始時のネコ画像のX座標 + (タッチ後移動した時の指のX座標 - タッチ開始時の指のX座標)

日本語で説明すると上のようになる。

これでスワイプの開始位置がどこになっても、指で動かしたぶん、ネコの画像が動くようになった。